class ConfigSnapshotTest
Same name and namespace in other branches
- 11.x core/tests/Drupal/KernelTests/Core/Config/ConfigSnapshotTest.php \Drupal\KernelTests\Core\Config\ConfigSnapshotTest
- 10 core/tests/Drupal/KernelTests/Core/Config/ConfigSnapshotTest.php \Drupal\KernelTests\Core\Config\ConfigSnapshotTest
- 8.9.x core/tests/Drupal/KernelTests/Core/Config/ConfigSnapshotTest.php \Drupal\KernelTests\Core\Config\ConfigSnapshotTest
Tests config snapshot creation and updating.
@group config
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertLegacyTrait, \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\KernelTests\Core\Config\ConfigSnapshotTest extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of ConfigSnapshotTest
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Config/ ConfigSnapshotTest.php, line 13
Namespace
Drupal\KernelTests\Core\ConfigView source
class ConfigSnapshotTest extends KernelTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = [
'config_test',
'system',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->installConfig([
'system',
]);
// Update the config snapshot. This allows the parent::setUp() to write
// configuration files.
\Drupal::service('config.manager')->createSnapshot(\Drupal::service('config.storage'), \Drupal::service('config.storage.snapshot'));
$this->copyConfig($this->container
->get('config.storage'), $this->container
->get('config.storage.sync'));
}
/**
* Tests config snapshot creation and updating.
*/
public function testSnapshot() {
$active = $this->container
->get('config.storage');
$sync = $this->container
->get('config.storage.sync');
$snapshot = $this->container
->get('config.storage.snapshot');
$config_name = 'config_test.system';
$config_key = 'foo';
$new_data = 'foobar';
$active_snapshot_comparer = new StorageComparer($active, $snapshot);
$sync_snapshot_comparer = new StorageComparer($sync, $snapshot);
// Verify that we have an initial snapshot that matches the active
// configuration. This has to be true as no config should be installed.
$this->assertFalse($active_snapshot_comparer->createChangelist()
->hasChanges());
// Install the default config.
$this->installConfig([
'config_test',
]);
// Although we have imported config this has not affected the snapshot.
$this->assertTrue($active_snapshot_comparer->reset()
->hasChanges());
// Update the config snapshot.
\Drupal::service('config.manager')->createSnapshot($active, $snapshot);
// The snapshot and active config should now contain the same config
// objects.
$this->assertFalse($active_snapshot_comparer->reset()
->hasChanges());
// Change a configuration value in sync.
$sync_data = $this->config($config_name)
->get();
$sync_data[$config_key] = $new_data;
$sync->write($config_name, $sync_data);
// Verify that active and snapshot match, and that sync doesn't match
// active.
$this->assertFalse($active_snapshot_comparer->reset()
->hasChanges());
$this->assertTrue($sync_snapshot_comparer->createChangelist()
->hasChanges());
// Import changed data from sync to active.
$this->configImporter()
->import();
// Verify changed config was properly imported.
\Drupal::configFactory()->reset($config_name);
$this->assertSame($new_data, $this->config($config_name)
->get($config_key));
// Verify that a new snapshot was created which and that it matches
// the active config.
$this->assertFalse($active_snapshot_comparer->reset()
->hasChanges());
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.