Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Field / FieldSettingsTest.php
index 583e55b7c4016cb72439795c641ba8bdb91fd5fd..590a96cd5f8e8d85c081b19b4b5a4124821a796c 100644 (file)
@@ -46,6 +46,34 @@ class FieldSettingsTest extends EntityKernelTestBase {
     $this->assertEqual($base_field->getSettings(), $expected_settings);
   }
 
+  /**
+   * Tests the base field settings on a cloned base field definition object.
+   */
+  public function testBaseFieldSettingsOnClone() {
+    $base_field = BaseFieldDefinition::create('test_field');
+
+    // Check that the default settings have been populated.
+    $expected_settings = [
+      'test_field_storage_setting' => 'dummy test string',
+      'changeable' => 'a changeable field storage setting',
+      'unchangeable' => 'an unchangeable field storage setting',
+      'translatable_storage_setting' => 'a translatable field storage setting',
+      'test_field_setting' => 'dummy test string',
+      'translatable_field_setting' => 'a translatable field setting',
+    ];
+    $this->assertEquals($expected_settings, $base_field->getSettings());
+
+    // Clone the base field object and change one single setting using
+    // setSettings() on the cloned base field and check that it has been
+    // changed only on the cloned object.
+    $clone_base_field = clone $base_field;
+    $expected_settings_clone = $expected_settings;
+    $expected_settings_clone['changeable'] = $expected_settings['changeable'] . ' (clone)';
+    $clone_base_field->setSetting('changeable', $expected_settings_clone['changeable']);
+    $this->assertEquals($expected_settings, $base_field->getSettings());
+    $this->assertEquals($expected_settings_clone, $clone_base_field->getSettings());
+  }
+
   /**
    * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings
    * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings