X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdevel%2Ftests%2Fsrc%2FKernel%2FDevelEnforcedDependenciesTest.php;fp=web%2Fmodules%2Fcontrib%2Fdevel%2Ftests%2Fsrc%2FKernel%2FDevelEnforcedDependenciesTest.php;h=b67965b254de21f8d51919a6f6803e1ec17fbff5;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/devel/tests/src/Kernel/DevelEnforcedDependenciesTest.php b/web/modules/contrib/devel/tests/src/Kernel/DevelEnforcedDependenciesTest.php new file mode 100644 index 000000000..b67965b25 --- /dev/null +++ b/web/modules/contrib/devel/tests/src/Kernel/DevelEnforcedDependenciesTest.php @@ -0,0 +1,80 @@ +installEntitySchema('user'); + $this->installConfig('devel'); + // For uninstall to work. + $this->installSchema('user', ['users_data']); + } + + /** + * Tests devel menu enforced dependencies. + */ + public function testMenuEnforcedDependencies() { + /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */ + $config_manager = $this->container->get('config.manager'); + + // Ensure that the Devel menu has explicit enforced dependencies on devel + // module. + $menu = Menu::load('devel'); + $this->assertEquals(['enforced' => ['module' => ['devel']]], $menu->get('dependencies')); + + // Creates an instance of devel menu block so you can test if enforced + // dependencies work properly with it. + $block_id = strtolower($this->randomMachineName(8)); + + $block = Block::create([ + 'plugin' => 'system_menu_block:devel', + 'region' => 'sidebar_first', + 'id' => $block_id, + 'theme' => $this->config('system.theme')->get('default'), + 'label' => $this->randomMachineName(8), + 'visibility' => array(), + 'weight' => 0, + ]); + $block->save(); + + // Ensure that the menu and block instance depend on devel module. + $dependents = $config_manager->findConfigEntityDependents('module', ['devel']); + $this->assertTrue(isset($dependents['system.menu.devel'])); + $this->assertTrue(isset($dependents['block.block.' . $block_id])); + + $this->container->get('module_installer')->uninstall(['devel']); + + // Ensure that the menu and block instance are deleted when the dependency + // is uninstalled. + $this->assertNull(Menu::load('devel')); + $this->assertNull(Block::load($block_id)); + + // Ensure that no config entities depend on devel once uninstalled. + $dependents = $config_manager->findConfigEntityDependents('module', ['devel']); + $this->assertFalse(isset($dependents['system.menu.devel'])); + $this->assertFalse(isset($dependents['block.block.' . $block_id])); + } + +}