From 2d85737a7d64a147e9267396668c3e4ef6432957 Mon Sep 17 00:00:00 2001
From: Jesse Hofmann-Smith <jesse@opensourcery.com>
Date: Thu, 12 Dec 2013 17:25:36 -0800
Subject: [PATCH] add variable config for menu module

---
 .../config/migrate.migration.d6_menu_settings.yml  | 14 +++++
 .../Tests/Dump/Drupal6MenuSettings.php             | 62 ++++++++++++++++++++++
 .../Tests/MigrateMenuConfigsTest.php               | 45 ++++++++++++++++
 3 files changed, 121 insertions(+)
 create mode 100644 core/modules/migrate_drupal/config/migrate.migration.d6_menu_settings.yml
 create mode 100644 core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6MenuSettings.php
 create mode 100644 core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateMenuConfigsTest.php

diff --git a/core/modules/migrate_drupal/config/migrate.migration.d6_menu_settings.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_menu_settings.yml
new file mode 100644
index 0000000..041f3fc
--- /dev/null
+++ b/core/modules/migrate_drupal/config/migrate.migration.d6_menu_settings.yml
@@ -0,0 +1,14 @@
+id: d6_menu_settings
+source:
+    plugin: drupal6_variable
+    variables:
+        - menu_primary_links_source
+        - menu_secondary_links_source
+        - menu_override_parent_selector
+process:
+    main_links: menu_primary_links_source
+    secondary_links: menu_secondary_links_source
+    override_parent_selector: menu_override_parent_selector
+destination:
+    plugin: d8_config
+    config_name: menu.settings
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6MenuSettings.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6MenuSettings.php
new file mode 100644
index 0000000..01ca46f
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6MenuSettings.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate\Tests\Drupal6MenuSettings.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Dump;
+
+use Drupal\Core\Database\Connection;
+
+/**
+ * Database dump for testing menu.settings.yml migration.
+ */
+class Drupal6MenuSettings {
+
+  /**
+   * Sample database schema and values.
+   *
+   * @param \Drupal\Core\Database\Connection $database
+   */
+  public static function load(Connection $database) {
+    $database->schema()->createTable('variable', array(
+      'fields' => array(
+        'name' => array(
+          'type' => 'varchar',
+          'length' => 128,
+          'not null' => TRUE,
+          'default' => '',
+        ),
+        'value' => array(
+          'type' => 'blob',
+          'not null' => TRUE,
+          'size' => 'big',
+          'translatable' => TRUE,
+        ),
+      ),
+      'primary key' => array(
+        'name',
+      ),
+      'module' => 'system',
+      'name' => 'variable',
+    ));
+    $database->insert('variable')->fields(array(
+      'name',
+      'value',
+    ))
+    ->values(array(
+      'name' => 'menu_primary_links_source',
+      'value' => 's:13:"primary-links";',
+    ))
+    ->values(array(
+      'name' => 'menu_secondary_links_source',
+      'value' => 's:15:"secondary-links";',
+    ))
+    ->values(array(
+      'name' => 'menu_override_parent_selector',
+      'value' => 'b:0;',
+    ))
+    ->execute();
+  }
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateMenuConfigsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateMenuConfigsTest.php
new file mode 100644
index 0000000..5c283f8
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateMenuConfigsTest.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Upgrade\MigrateMenuConfigsTest.
+ */
+
+namespace Drupal\migrate_drupal\Tests;
+
+use Drupal\migrate\MigrateMessage;
+use Drupal\migrate\MigrateExecutable;
+
+/**
+ * Tests migration of variables for the Menu module.
+ */
+class MigrateMenuConfigsTest extends MigrateDrupalTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name'  => 'Migrate variables to menu.settings.yml',
+      'description'  => 'Upgrade variables to menu.settings.yml',
+      'group' => 'Migrate Drupal',
+    );
+  }
+
+  /**
+   * Tests migration of forum variables to forum.settings.yml.
+   */
+  public function testMenuSettings() {
+    $migration = entity_load('migration', 'd6_menu_settings');
+    $dumps = array(
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6MenuSettings.php',
+    );
+    $this->prepare($migration, $dumps);
+    $executable = new MigrateExecutable($migration, new MigrateMessage);
+    $executable->import();
+    $config = \Drupal::config('menu.settings');
+    $this->assertIdentical($config->get('main_links'), 'primary-links');
+    $this->assertIdentical($config->get('secondary_links'), 'secondary-links');
+    $this->assertIdentical($config->get('override_parent_selector'), FALSE);
+  }
+}
-- 
1.8.3.4 (Apple Git-47)

