From 4d9ce53bfbc9e74270212f8cedec961a9f6cceff Mon Sep 17 00:00:00 2001
From: webchick <drupal@webchick.net>
Date: Fri, 30 Oct 2015 10:13:09 -0400
Subject: [PATCH] Issue #2590105 by webflo, phenaproxima, snehi, alexpott: Fix
 undefined variable in d6_field migration

---
 .../migrate/process/d6/FieldSettings.php      |  4 +-
 .../migrate/process/d6/FieldSettingsTest.php  | 72 +++++++++++++++++++
 2 files changed, 73 insertions(+), 3 deletions(-)
 create mode 100644 core/modules/field/tests/src/Unit/Plugin/migrate/process/d6/FieldSettingsTest.php

diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
index 01ef472ab72f..96be489e1d96 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
@@ -44,6 +44,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
   public function getSettings($field_type, $global_settings) {
     $max_length = isset($global_settings['max_length']) ? $global_settings['max_length'] : '';
     $max_length = empty($max_length) ? 255 : $max_length;
+    $allowed_values = [];
     if (isset($global_settings['allowed_values'])) {
       $list = explode("\n", $global_settings['allowed_values']);
       $list = array_map('trim', $list);
@@ -62,9 +63,6 @@ public function getSettings($field_type, $global_settings) {
           $allowed_values = $list;
       }
     }
-    else {
-      $allowed_values = '';
-    }
 
     $settings = array(
       'text' => array(
diff --git a/core/modules/field/tests/src/Unit/Plugin/migrate/process/d6/FieldSettingsTest.php b/core/modules/field/tests/src/Unit/Plugin/migrate/process/d6/FieldSettingsTest.php
new file mode 100644
index 000000000000..c0a12dd61df5
--- /dev/null
+++ b/core/modules/field/tests/src/Unit/Plugin/migrate/process/d6/FieldSettingsTest.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\field\Unit\Plugin\migrate\process\d6\FieldSettingsTest.
+ */
+
+namespace Drupal\Tests\field\Unit\Plugin\migrate\process\d6;
+
+use Drupal\field\Plugin\migrate\process\d6\FieldSettings;
+use Drupal\migrate\Entity\MigrationInterface;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\Row;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @coversDefaultClass \Drupal\field\Plugin\migrate\process\d6\FieldSettings
+ * @group field
+ */
+class FieldSettingsTest extends UnitTestCase {
+
+  /**
+   * @covers ::getSettings
+   *
+   * @dataProvider getSettingsProvider
+   */
+  public function testGetSettings($field_type, $field_settings, $allowed_values) {
+    $migration = $this->getMock(MigrationInterface::class);
+    $plugin = new FieldSettings([], 'd6_field_settings', [], $migration);
+
+    $executable = $this->getMock(MigrateExecutableInterface::class);
+    $row = $this->getMockBuilder(Row::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+
+    $result = $plugin->transform([$field_type, $field_settings], $executable, $row, 'foo');
+    $this->assertSame($allowed_values, $result['allowed_values']);
+  }
+
+  /**
+   * Provides field settings for testGetSettings().
+   */
+  public function getSettingsProvider() {
+    return array(
+      array(
+        'list_integer',
+        array('allowed_values' => "1|One\n2|Two\n3"),
+        array(
+          '1' => 'One',
+          '2' => 'Two',
+          '3' => '3',
+        ),
+      ),
+      array(
+        'list_string',
+        array('allowed_values' => NULL),
+        array(),
+      ),
+      array(
+        'list_float',
+        array('allowed_values' => ""),
+        array(),
+      ),
+      array(
+        'boolean',
+        array(),
+        array(),
+      ),
+    );
+  }
+
+}
-- 
GitLab