diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigDependencyTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigDependencyTest.php index 0cb93e8..3777105 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigDependencyTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigDependencyTest.php @@ -148,7 +148,62 @@ public function testDependencyMangement() { $this->assertTrue(in_array('config_test:entity4', $dependent_ids), 'config_test.dynamic.entity4 has a dependency on config_test module.'); $this->assertTrue(in_array('config_query_test:entity1', $dependent_ids), 'config_test.query.entity1 has a dependency on config_test module.'); $this->assertTrue(in_array('config_query_test:entity2', $dependent_ids), 'config_test.query.entity2 has a dependency on config_test module.'); + } + /** + * Tests validation of configuration dependencies existence. + */ + public function testDependencyValidation() { + $config_manager = \Drupal::service('config.manager'); + $storage = $this->container->get('entity.manager')->getStorage('config_test'); + $stored_entity = $storage->create( + array( + 'id' => 'entity', + 'label' => 'Entity', + 'status' => TRUE, + 'test_dependencies' => array( + 'module' => array('node', 'config_test') + ) + ) + ); + $stored_entity->save(); + + // Test loading an entity by it's configuration name. + $entity = $config_manager->getEntityByConfigName('config_test.dynamic.entity_missing'); + $this->assertNull($entity, 'entity with configuration name config_test.dynamic.entity_missing does not exist'); + + $entity = $config_manager->getEntityByConfigName('config_test.dynamic.entity'); + $this->assertNotNull($entity, 'entity with configuration name config_test.dynamic.entity exists'); + $this->assertIdentical($entity->label(), 'Entity', 'loaded entity has label "Entity"'); + $this->assertIdentical($entity->id(), 'entity', 'loaded entity has id "entity"'); + $this->assertTrue($entity->status(), 'loaded entity is enabled'); + + // Test existence of the configuration dependecies. + $test_dependencies = array( + 'module' => array('system') + ); + $this->assertTrue($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency system module exists'); + $test_dependencies = array( + 'theme' => array('stark') + ); + $this->assertTrue($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency stark theme exists'); + $test_dependencies = array( + 'entity' => array('config_test.dynamic.entity') + ); + $this->assertTrue($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency configuration entity config_test.dynamic.entity exists'); + + $test_dependencies = array( + 'module' => array('system_missing') + ); + $this->assertFalse($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency system_missing module does not exist'); + $test_dependencies = array( + 'theme' => array('stark_missing') + ); + $this->assertFalse($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency stark_missing theme does not exist'); + $test_dependencies = array( + 'entity' => array('config_test.dynamic.entity_missing') + ); + $this->assertFalse($config_manager->validateConfigEntityDependentsExistence($test_dependencies), 'dependency configuration entity config_test.dynamic.entity_missing does not exist'); } /** diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php index b45086f..a90f3fd 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php @@ -167,6 +167,8 @@ public function testImport() { dependencies: module: - config + theme: + - stark entity: EOD; $entity = $storage->load('second');