function ConfigInstallTest::testDependencyChecking

Same name and namespace in other branches
  1. 9 core/tests/Drupal/KernelTests/Core/Config/ConfigInstallTest.php \Drupal\KernelTests\Core\Config\ConfigInstallTest::testDependencyChecking()
  2. 8.9.x core/tests/Drupal/KernelTests/Core/Config/ConfigInstallTest.php \Drupal\KernelTests\Core\Config\ConfigInstallTest::testDependencyChecking()
  3. 11.x core/tests/Drupal/KernelTests/Core/Config/ConfigInstallTest.php \Drupal\KernelTests\Core\Config\ConfigInstallTest::testDependencyChecking()

Tests the configuration with unmet dependencies is not installed.

File

core/tests/Drupal/KernelTests/Core/Config/ConfigInstallTest.php, line 208

Class

ConfigInstallTest
Tests installation of configuration objects in installation functionality.

Namespace

Drupal\KernelTests\Core\Config

Code

public function testDependencyChecking() : void {
  $this->installModules([
    'config_test',
  ]);
  try {
    $this->installModules([
      'config_install_dependency_test',
    ]);
    $this->fail('Expected UnmetDependenciesException not thrown.');
  } catch (UnmetDependenciesException $e) {
    $this->assertEquals('config_install_dependency_test', $e->getExtension());
    $this->assertEquals([
      'config_test.dynamic.other_module_test_with_dependency' => [
        'config_other_module_config_test',
        'config_test.dynamic.dotted.english',
      ],
    ], $e->getConfigObjects());
    $this->assertEquals('Configuration objects provided by <em class="placeholder">config_install_dependency_test</em> have unmet dependencies: <em class="placeholder">config_test.dynamic.other_module_test_with_dependency (config_other_module_config_test, config_test.dynamic.dotted.english)</em>', $e->getMessage());
  }
  try {
    $this->installModules([
      'config_install_double_dependency_test',
    ]);
    $this->fail('Expected UnmetDependenciesException not thrown.');
  } catch (UnmetDependenciesException $e) {
    $this->assertEquals('config_install_double_dependency_test', $e->getExtension());
    $this->assertEquals([
      'config_test.dynamic.other_module_test_with_dependency' => [
        'config_other_module_config_test',
        'config_test.dynamic.dotted.english',
      ],
    ], $e->getConfigObjects());
    $this->assertEquals('Configuration objects provided by <em class="placeholder">config_install_double_dependency_test</em> have unmet dependencies: <em class="placeholder">config_test.dynamic.other_module_test_with_dependency (config_other_module_config_test, config_test.dynamic.dotted.english)</em>', $e->getMessage());
  }
  $this->installModules([
    'config_test_language',
  ]);
  try {
    $this->installModules([
      'config_install_dependency_test',
    ]);
    $this->fail('Expected UnmetDependenciesException not thrown.');
  } catch (UnmetDependenciesException $e) {
    $this->assertEquals('config_install_dependency_test', $e->getExtension());
    $this->assertEquals([
      'config_test.dynamic.other_module_test_with_dependency' => [
        'config_other_module_config_test',
      ],
    ], $e->getConfigObjects());
    $this->assertEquals('Configuration objects provided by <em class="placeholder">config_install_dependency_test</em> have unmet dependencies: <em class="placeholder">config_test.dynamic.other_module_test_with_dependency (config_other_module_config_test)</em>', $e->getMessage());
  }
  $this->installModules([
    'config_other_module_config_test',
  ]);
  $this->installModules([
    'config_install_dependency_test',
  ]);
  $entity = \Drupal::entityTypeManager()->getStorage('config_test')
    ->load('other_module_test_with_dependency');
  $this->assertNotEmpty($entity, 'The config_test.dynamic.other_module_test_with_dependency configuration has been created during install.');
  // Ensure that dependencies can be added during module installation by
  // hooks.
  $this->assertSame('config_install_dependency_test', $entity->getDependencies()['module'][0]);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.