ConfigIgnoreTest.php in Config Ignore 8.3
Same filename and directory in other branches
Namespace
Drupal\Tests\config_ignore\FunctionalFile
tests/src/Functional/ConfigIgnoreTest.phpView source
<?php
namespace Drupal\Tests\config_ignore\Functional;
use Drupal\config_test\ConfigTestInterface;
/**
* Test functionality of config_ignore module.
*
* @group config_ignore
*/
class ConfigIgnoreTest extends ConfigIgnoreBrowserTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'config',
'config_test',
];
/**
* Verify that the settings form works.
*/
public function testSettingsForm() {
// Login with a user that has permission to import config.
$this
->drupalLogin($this
->drupalCreateUser([
'import configuration',
]));
$edit = [
'ignored_config_entities' => 'config.test_01' . "\r\n" . 'config.test_02',
];
$this
->drupalGet('admin/config/development/configuration/ignore');
$this
->submitForm($edit, t('Save configuration'));
$settings = $this
->config('config_ignore.settings')
->get('ignored_config_entities');
$this
->assertEquals([
'config.test_01',
'config.test_02',
], $settings);
}
/**
* Verify that config can get ignored.
*/
public function testValidateIgnoring() {
// Set the site name to a known value that we later will try and overwrite.
$this
->config('system.site')
->set('name', 'Test import')
->save();
// Set the system.site:name to be ignored upon config import.
$this
->config('config_ignore.settings')
->set('ignored_config_entities', [
'system.site',
])
->save();
$this
->doExport();
// Change the site name, perform an import and see if the site name remains
// the same, as it should.
$this
->config('system.site')
->set('name', 'Changed title')
->save();
$this
->doImport();
$this
->assertEquals('Changed title', $this
->config('system.site')
->get('name'));
}
/**
* Verify all wildcard asterisk is working.
*/
public function testValidateIgnoringWithWildcard() {
// Set the site name to a known value that we later will try and overwrite.
$this
->config('system.site')
->set('name', 'Test import')
->save();
// Set the system.site:name to be ignored upon config import.
$this
->config('config_ignore.settings')
->set('ignored_config_entities', [
'system.*',
])
->save();
$this
->doExport();
// Change the site name, perform an import and see if the site name remains
// the same, as it should.
$this
->config('system.site')
->set('name', 'Changed title')
->save();
$this
->doImport();
$this
->assertEquals('Changed title', $this
->config('system.site')
->get('name'));
}
/**
* Verify Force Import syntax is working.
*
* This test makes sure we avoid regression issues.
*/
public function testValidateForceImporting() {
// Set the site name to a known value that we later will try and overwrite.
$this
->config('system.site')
->set('name', 'Test import')
->save();
// Set the system.site:name to be (force-) imported upon config import.
$settings = [
'~system.site',
];
$this
->config('config_ignore.settings')
->set('ignored_config_entities', $settings)
->save();
$this
->doExport();
// Change the site name, perform an import and see if the site name remains
// the same, as it should.
$this
->config('system.site')
->set('name', 'Changed title')
->save();
$this
->doImport();
$this
->assertEquals('Test import', $this
->config('system.site')
->get('name'));
}
/**
* Verify excluded configuration works with wildcards.
*
* This test cover the scenario where a wildcard matches a specific
* configuration, but that's still imported due exclusion.
*/
public function testValidateForceImportingWithWildcard() {
// Set the site name to a known value that we later will try and overwrite.
$this
->config('system.site')
->set('name', 'Test import')
->save();
// Set the system.site:name to be (force-) imported upon config import.
$settings = [
'system.*',
'~system.site',
];
$this
->config('config_ignore.settings')
->set('ignored_config_entities', $settings)
->save();
$this
->doExport();
// Change the site name, perform an import and see if the site name remains
// the same, as it should.
$this
->config('system.site')
->set('name', 'Changed title')
->save();
$this
->doImport();
$this
->assertEquals('Test import', $this
->config('system.site')
->get('name'));
}
/**
* Verify ignoring only some config keys.
*
* This test covers the scenario when not the whole config is to be ignored
* but only a certain subset of it.
*/
public function testValidateImportingWithIgnoredSubKeys() {
// Set the site name to a known value that we later will try and overwrite.
$this
->config('system.site')
->set('name', 'Test name')
->set('slogan', 'Test slogan')
->set('page.front', '/ignore')
->save();
// Set the system.site:name to be (force-) imported upon config import.
$settings = [
'system.site:name',
'system.site:page.front',
];
$this
->config('config_ignore.settings')
->set('ignored_config_entities', $settings)
->save();
$this
->doExport();
// Change the site name, perform an import and see if the site name remains
// the same, as it should.
$this
->config('system.site')
->set('name', 'Changed title')
->set('slogan', 'Changed slogan')
->set('page.front', '/new-ignore')
->save();
$this
->doImport();
$this
->assertEquals('Changed title', $this
->config('system.site')
->get('name'));
$this
->assertEquals('Test slogan', $this
->config('system.site')
->get('slogan'));
$this
->assertEquals('/new-ignore', $this
->config('system.site')
->get('page.front'));
}
/**
* Tests config in active storage is not deleted if it should be ignored.
*/
public function testImportMissingConfig() {
// Ignore a config entity.
$this
->config('config_ignore.settings')
->set('ignored_config_entities', [
'config_test.*',
])
->save();
// Export the current state.
$this
->doExport();
/** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface $config_test_storage */
$config_test_storage = $this->container
->get('entity_type.manager')
->getStorage('config_test');
/** @var \Drupal\config_test\ConfigTestInterface $entity */
$entity = $config_test_storage
->create([
'id' => 'foo',
'label' => 'Foo',
]);
$entity
->save();
$this
->doImport();
$loaded_entity = $config_test_storage
->load($entity
->id());
$this
->assertInstanceOf(ConfigTestInterface::class, $loaded_entity);
}
}
Classes
Name![]() |
Description |
---|---|
ConfigIgnoreTest | Test functionality of config_ignore module. |