diff --git a/core/modules/system/src/Tests/Entity/EntityFieldTest.php b/core/modules/system/src/Tests/Entity/EntityFieldTest.php index 1fbf987..5d93c78 100644 --- a/core/modules/system/src/Tests/Entity/EntityFieldTest.php +++ b/core/modules/system/src/Tests/Entity/EntityFieldTest.php @@ -16,7 +16,6 @@ use Drupal\Core\TypedData\DataDefinitionInterface; use Drupal\Core\TypedData\Type\StringInterface; use Drupal\Core\TypedData\TypedDataInterface; -use Drupal\field\Entity\FieldStorageConfig; use Drupal\node\Entity\NodeType; /** @@ -737,19 +736,4 @@ protected function doTestComputedProperties($entity_type) { $this->assertEqual($entity->field_test_text->processed, $target, format_string('%entity_type: Text is processed with the default filter.', array('%entity_type' => $entity_type))); } - /** - * Test saving single settings of a field. - */ - public function testSetSettings() { - $field_storage = FieldStorageConfig::create(array( - 'field_name' => 'test_field', - 'entity_type' => 'entity_test', - 'type' => 'test_field' - )); - $field_storage->save(); - $settings = $field_storage->getSettings(); - $settings['test_field_storage_setting'] = 'A valid test string'; - $field_storage->setSettings(array('test_field_storage_setting' => 'A valid test string')); - $this->assertEqual($field_storage->getSettings(), $settings); - } } diff --git a/core/modules/system/src/Tests/Field/FieldSettingsTest.php b/core/modules/system/src/Tests/Field/FieldSettingsTest.php new file mode 100644 index 0000000..2c2a8e9 --- /dev/null +++ b/core/modules/system/src/Tests/Field/FieldSettingsTest.php @@ -0,0 +1,120 @@ + '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->assertEqual($base_field->getSettings(), $expected_settings); + + // Change one single setting using setSettings(), and check that the other + // expected settings are still present. + $expected_settings['test_field_setting'] = 'another test string'; + $base_field->setSettings(['test_field_setting' => $expected_settings['test_field_setting']]); + $this->assertEqual($base_field->getSettings(), $expected_settings); + } + + /** + * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings() + * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings() + */ + public function testConfigurableFieldStorageSettings() { + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'test_field', + 'entity_type' => 'entity_test', + 'type' => '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', + ]; + $this->assertEqual($field_storage->getSettings(), $expected_settings); + + // Change one single setting using setSettings(), and check that the other + // expected settings are still present. + $expected_settings['test_field_storage_setting'] = 'another test string'; + $field_storage->setSettings(['test_field_storage_setting' => $expected_settings['test_field_storage_setting']]); + $this->assertEqual($field_storage->getSettings(), $expected_settings); + } + + /** + * @covers \Drupal\field\Entity\FieldStorageConfig::getSettings() + * @covers \Drupal\field\Entity\FieldStorageConfig::setSettings() + */ + public function testConfigurableFieldSettings() { + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'test_field', + 'entity_type' => 'entity_test', + 'type' => 'test_field' + ]); + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'entity_test' + ]); + // Note: FieldConfig does not populate default settings until the config + // is saved. + // @todo Remove once https://www.drupal.org/node/2327883 is fixed. + $field->save(); + + // Check that the default settings have been populated. Note: getSettings() + // returns both storage and field settings. + $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', + 'field_setting_from_config_data' => TRUE, + ]; + $this->assertEqual($field->getSettings(), $expected_settings); + + // Change one single setting using setSettings(), and check that the other + // expected settings are still present. + $expected_settings['test_field_setting'] = 'another test string'; + $field->setSettings(['test_field_setting' => $expected_settings['test_field_setting']]); + $this->assertEqual($field->getSettings(), $expected_settings); + } + +}