function ConfigInstallWebTest::testIntegrationModuleReinstallation
Same name in other branches
- 9 core/modules/config/tests/src/Functional/ConfigInstallWebTest.php \Drupal\Tests\config\Functional\ConfigInstallWebTest::testIntegrationModuleReinstallation()
- 8.9.x core/modules/config/tests/src/Functional/ConfigInstallWebTest.php \Drupal\Tests\config\Functional\ConfigInstallWebTest::testIntegrationModuleReinstallation()
- 11.x core/modules/config/tests/src/Functional/ConfigInstallWebTest.php \Drupal\Tests\config\Functional\ConfigInstallWebTest::testIntegrationModuleReinstallation()
Tests module re-installation.
File
-
core/
modules/ config/ tests/ src/ Functional/ ConfigInstallWebTest.php, line 58
Class
- ConfigInstallWebTest
- Tests configuration objects before and after module install and uninstall.
Namespace
Drupal\Tests\config\FunctionalCode
public function testIntegrationModuleReinstallation() : void {
$default_config = 'config_integration_test.settings';
$default_configuration_entity = 'config_test.dynamic.config_integration_test';
// Install the config_test module we're integrating with.
\Drupal::service('module_installer')->install([
'config_test',
]);
// Verify the configuration does not exist prior to installation.
$config_static = $this->config($default_config);
$this->assertTrue($config_static->isNew());
$config_entity = $this->config($default_configuration_entity);
$this->assertTrue($config_entity->isNew());
// Install the integration module.
\Drupal::service('module_installer')->install([
'config_integration_test',
]);
$this->resetAll();
// Verify that default module config exists.
\Drupal::configFactory()->reset($default_config);
\Drupal::configFactory()->reset($default_configuration_entity);
$config_static = $this->config($default_config);
$this->assertFalse($config_static->isNew());
$this->assertSame('default setting', $config_static->get('foo'));
$config_entity = $this->config($default_configuration_entity);
$this->assertFalse($config_entity->isNew());
$this->assertSame('Default integration config label', $config_entity->get('label'));
// Customize both configuration objects.
$config_static->set('foo', 'customized setting')
->save();
$config_entity->set('label', 'Customized integration config label')
->save();
// @todo FIXME: Setting config keys WITHOUT SAVING retains the changed config
// object in memory. Every new call to $this->config() MUST revert in-memory changes
// that haven't been saved!
// In other words: This test passes even without this reset, but it shouldn't.
$this->container
->get('config.factory')
->reset();
// Disable and uninstall the integration module.
$this->container
->get('module_installer')
->uninstall([
'config_integration_test',
]);
// Verify the integration module's config was uninstalled.
$config_static = $this->config($default_config);
$this->assertTrue($config_static->isNew());
// Verify the integration config still exists.
$config_entity = $this->config($default_configuration_entity);
$this->assertFalse($config_entity->isNew());
$this->assertSame('Customized integration config label', $config_entity->get('label'));
// Reinstall the integration module.
try {
\Drupal::service('module_installer')->install([
'config_integration_test',
]);
$this->fail('Expected PreExistingConfigException not thrown.');
} catch (PreExistingConfigException $e) {
$this->assertEquals('config_integration_test', $e->getExtension());
$this->assertEquals([
StorageInterface::DEFAULT_COLLECTION => [
'config_test.dynamic.config_integration_test',
],
], $e->getConfigObjects());
$this->assertEquals('Configuration objects (config_test.dynamic.config_integration_test) provided by config_integration_test already exist in active configuration', $e->getMessage());
}
// Delete the configuration entity so that the install will work.
$config_entity->delete();
\Drupal::service('module_installer')->install([
'config_integration_test',
]);
// Verify the integration module's config was re-installed.
\Drupal::configFactory()->reset($default_config);
\Drupal::configFactory()->reset($default_configuration_entity);
$config_static = $this->config($default_config);
$this->assertFalse($config_static->isNew());
$this->assertSame('default setting', $config_static->get('foo'));
// Verify the integration config is using the default.
$config_entity = \Drupal::config($default_configuration_entity);
$this->assertFalse($config_entity->isNew());
$this->assertSame('Default integration config label', $config_entity->get('label'));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.