3 namespace Drupal\KernelTests\Core\Field;
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;
11 * Tests field settings methods on field definition structures.
15 class FieldSettingsTest extends EntityKernelTestBase {
22 public static $modules = ['field', 'field_test'];
25 * @covers \Drupal\Core\Field\BaseFieldDefinition::getSettings
26 * @covers \Drupal\Core\Field\BaseFieldDefinition::setSettings
28 public function testBaseFieldSettings() {
29 $base_field = BaseFieldDefinition::create('test_field');
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',
40 $this->assertEqual($base_field->getSettings(), $expected_settings);
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);
50 * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings
51 * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings
53 public function testConfigurableFieldStorageSettings() {
54 $field_storage = FieldStorageConfig::create([
55 'field_name' => 'test_field',
56 'entity_type' => 'entity_test',
57 'type' => 'test_field'
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',
67 $this->assertEqual($field_storage->getSettings(), $expected_settings);
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);
77 * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings
78 * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings
80 public function testConfigurableFieldSettings() {
81 $field_storage = FieldStorageConfig::create([
82 'field_name' => 'test_field',
83 'entity_type' => 'entity_test',
84 'type' => 'test_field'
86 $field = FieldConfig::create([
87 'field_storage' => $field_storage,
88 'bundle' => 'entity_test'
90 // Note: FieldConfig does not populate default settings until the config
92 // @todo Remove once https://www.drupal.org/node/2327883 is fixed.
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',
106 $this->assertEqual($field->getSettings(), $expected_settings);
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);