Version 1
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Field / FieldSettingsTest.php
1 <?php
2
3 namespace Drupal\KernelTests\Core\Field;
4
5 use Drupal\Core\Field\BaseFieldDefinition;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\field\Entity\FieldStorageConfig;
8 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
9
10 /**
11  * Tests field settings methods on field definition structures.
12  *
13  * @group Field
14  */
15 class FieldSettingsTest extends EntityKernelTestBase {
16
17   /**
18    * Modules to enable.
19    *
20    * @var array
21    */
22   public static $modules = ['field', 'field_test'];
23
24   /**
25    * @covers \Drupal\Core\Field\BaseFieldDefinition::getSettings
26    * @covers \Drupal\Core\Field\BaseFieldDefinition::setSettings
27    */
28   public function testBaseFieldSettings() {
29     $base_field = BaseFieldDefinition::create('test_field');
30
31     // Check that the default settings have been populated.
32     $expected_settings = [
33       'test_field_storage_setting' => 'dummy test string',
34       'changeable' => 'a changeable field storage setting',
35       'unchangeable' => 'an unchangeable field storage setting',
36       'translatable_storage_setting' => 'a translatable field storage setting',
37       'test_field_setting' => 'dummy test string',
38       'translatable_field_setting' => 'a translatable field setting',
39     ];
40     $this->assertEqual($base_field->getSettings(), $expected_settings);
41
42     // Change one single setting using setSettings(), and check that the other
43     // expected settings are still present.
44     $expected_settings['test_field_setting'] = 'another test string';
45     $base_field->setSettings(['test_field_setting' => $expected_settings['test_field_setting']]);
46     $this->assertEqual($base_field->getSettings(), $expected_settings);
47   }
48
49   /**
50    * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings
51    * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings
52    */
53   public function testConfigurableFieldStorageSettings() {
54     $field_storage = FieldStorageConfig::create([
55       'field_name' => 'test_field',
56       'entity_type' => 'entity_test',
57       'type' => 'test_field'
58     ]);
59
60     // Check that the default settings have been populated.
61     $expected_settings = [
62       'test_field_storage_setting' => 'dummy test string',
63       'changeable' => 'a changeable field storage setting',
64       'unchangeable' => 'an unchangeable field storage setting',
65       'translatable_storage_setting' => 'a translatable field storage setting',
66     ];
67     $this->assertEqual($field_storage->getSettings(), $expected_settings);
68
69     // Change one single setting using setSettings(), and check that the other
70     // expected settings are still present.
71     $expected_settings['test_field_storage_setting'] = 'another test string';
72     $field_storage->setSettings(['test_field_storage_setting' => $expected_settings['test_field_storage_setting']]);
73     $this->assertEqual($field_storage->getSettings(), $expected_settings);
74   }
75
76   /**
77    * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings
78    * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings
79    */
80   public function testConfigurableFieldSettings() {
81     $field_storage = FieldStorageConfig::create([
82       'field_name' => 'test_field',
83       'entity_type' => 'entity_test',
84       'type' => 'test_field'
85     ]);
86     $field = FieldConfig::create([
87       'field_storage' => $field_storage,
88       'bundle' => 'entity_test'
89     ]);
90     // Note: FieldConfig does not populate default settings until the config
91     // is saved.
92     // @todo Remove once https://www.drupal.org/node/2327883 is fixed.
93     $field->save();
94
95     // Check that the default settings have been populated. Note: getSettings()
96     // returns both storage and field settings.
97     $expected_settings = [
98       'test_field_storage_setting' => 'dummy test string',
99       'changeable' => 'a changeable field storage setting',
100       'unchangeable' => 'an unchangeable field storage setting',
101       'translatable_storage_setting' => 'a translatable field storage setting',
102       'test_field_setting' => 'dummy test string',
103       'translatable_field_setting' => 'a translatable field setting',
104       'field_setting_from_config_data' => 'TRUE',
105     ];
106     $this->assertEqual($field->getSettings(), $expected_settings);
107
108     // Change one single setting using setSettings(), and check that the other
109     // expected settings are still present.
110     $expected_settings['test_field_setting'] = 'another test string';
111     $field->setSettings(['test_field_setting' => $expected_settings['test_field_setting']]);
112     $this->assertEqual($field->getSettings(), $expected_settings);
113   }
114
115 }