function ConfigCRUDTest::testCRUD in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/config/src/Tests/ConfigCRUDTest.php \Drupal\config\Tests\ConfigCRUDTest::testCRUD()
Tests CRUD operations.
File
- core/
modules/ config/ src/ Tests/ ConfigCRUDTest.php, line 44 - Contains \Drupal\config\Tests\ConfigCRUDTest.
Class
- ConfigCRUDTest
- Tests CRUD operations on configuration objects.
Namespace
Drupal\config\TestsCode
function testCRUD() {
$storage = $this->container
->get('config.storage');
$config_factory = $this->container
->get('config.factory');
$name = 'config_test.crud';
$config = $this
->config($name);
$this
->assertIdentical($config
->isNew(), TRUE);
// Create a new configuration object.
$config
->set('value', 'initial');
$config
->save();
$this
->assertIdentical($config
->isNew(), FALSE);
// Verify the active configuration contains the saved value.
$actual_data = $storage
->read($name);
$this
->assertIdentical($actual_data, array(
'value' => 'initial',
));
// Update the configuration object instance.
$config
->set('value', 'instance-update');
$config
->save();
$this
->assertIdentical($config
->isNew(), FALSE);
// Verify the active configuration contains the updated value.
$actual_data = $storage
->read($name);
$this
->assertIdentical($actual_data, array(
'value' => 'instance-update',
));
// Verify a call to $this->config() immediately returns the updated value.
$new_config = $this
->config($name);
$this
->assertIdentical($new_config
->get(), $config
->get());
$this
->assertIdentical($config
->isNew(), FALSE);
// Pollute the config factory static cache.
$config_factory
->getEditable($name);
// Delete the configuration object.
$config
->delete();
// Verify the configuration object is empty.
$this
->assertIdentical($config
->get(), array());
$this
->assertIdentical($config
->isNew(), TRUE);
// Verify that all copies of the configuration has been removed from the
// static cache.
$this
->assertIdentical($config_factory
->getEditable($name)
->isNew(), TRUE);
// Verify the active configuration contains no value.
$actual_data = $storage
->read($name);
$this
->assertIdentical($actual_data, FALSE);
// Verify $this->config() returns no data.
$new_config = $this
->config($name);
$this
->assertIdentical($new_config
->get(), $config
->get());
$this
->assertIdentical($config
->isNew(), TRUE);
// Re-create the configuration object.
$config
->set('value', 're-created');
$config
->save();
$this
->assertIdentical($config
->isNew(), FALSE);
// Verify the active configuration contains the updated value.
$actual_data = $storage
->read($name);
$this
->assertIdentical($actual_data, array(
'value' => 're-created',
));
// Verify a call to $this->config() immediately returns the updated value.
$new_config = $this
->config($name);
$this
->assertIdentical($new_config
->get(), $config
->get());
$this
->assertIdentical($config
->isNew(), FALSE);
// Rename the configuration object.
$new_name = 'config_test.crud_rename';
$this->container
->get('config.factory')
->rename($name, $new_name);
$renamed_config = $this
->config($new_name);
$this
->assertIdentical($renamed_config
->get(), $config
->get());
$this
->assertIdentical($renamed_config
->isNew(), FALSE);
// Ensure that the old configuration object is removed from both the cache
// and the configuration storage.
$config = $this
->config($name);
$this
->assertIdentical($config
->get(), array());
$this
->assertIdentical($config
->isNew(), TRUE);
// Test renaming when config.factory does not have the object in its static
// cache.
$name = 'config_test.crud_rename';
// Pollute the non-overrides static cache.
$config_factory
->getEditable($name);
// Pollute the overrides static cache.
$config = $config_factory
->get($name);
// Rename and ensure that happened properly.
$new_name = 'config_test.crud_rename_no_cache';
$config_factory
->rename($name, $new_name);
$renamed_config = $config_factory
->get($new_name);
$this
->assertIdentical($renamed_config
->get(), $config
->get());
$this
->assertIdentical($renamed_config
->isNew(), FALSE);
// Ensure the overrides static cache has been cleared.
$this
->assertIdentical($config_factory
->get($name)
->isNew(), TRUE);
// Ensure the non-overrides static cache has been cleared.
$this
->assertIdentical($config_factory
->getEditable($name)
->isNew(), TRUE);
// Merge data into the configuration object.
$new_config = $this
->config($new_name);
$expected_values = array(
'value' => 'herp',
'404' => 'derp',
);
$new_config
->merge($expected_values);
$new_config
->save();
$this
->assertIdentical($new_config
->get('value'), $expected_values['value']);
$this
->assertIdentical($new_config
->get('404'), $expected_values['404']);
// Test that getMultiple() does not return new config objects that were
// previously accessed with get()
$new_config = $config_factory
->get('non_existing_key');
$this
->assertTrue($new_config
->isNew());
$this
->assertEqual(0, count($config_factory
->loadMultiple([
'non_existing_key',
])), 'loadMultiple() does not return new objects');
}