b67965b254de21f8d51919a6f6803e1ec17fbff5
[yaffs-website] / web / modules / contrib / devel / tests / src / Kernel / DevelEnforcedDependenciesTest.php
1 <?php
2
3 namespace Drupal\Tests\devel\Kernel;
4
5 use Drupal\block\Entity\Block;
6 use Drupal\KernelTests\KernelTestBase;
7 use Drupal\system\Entity\Menu;
8
9 /**
10  * Tests Devel enforced dependencies.
11  *
12  * @group devel
13  */
14 class DevelEnforcedDependenciesTest extends KernelTestBase {
15
16   /**
17    * Modules to enable.
18    *
19    * @var array
20    */
21   public static $modules = ['devel', 'block', 'user', 'system'];
22
23   /**
24    * {@inheritdoc}
25    */
26   protected function setUp() {
27     parent::setUp();
28
29     $this->installEntitySchema('user');
30     $this->installConfig('devel');
31     // For uninstall to work.
32     $this->installSchema('user', ['users_data']);
33   }
34
35   /**
36    * Tests devel menu enforced dependencies.
37    */
38   public function testMenuEnforcedDependencies() {
39     /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */
40     $config_manager = $this->container->get('config.manager');
41
42     // Ensure that the Devel menu has explicit enforced dependencies on devel
43     // module.
44     $menu = Menu::load('devel');
45     $this->assertEquals(['enforced' => ['module' => ['devel']]], $menu->get('dependencies'));
46
47     // Creates an instance of devel menu block so you can test if enforced
48     // dependencies work properly with it.
49     $block_id = strtolower($this->randomMachineName(8));
50
51     $block = Block::create([
52       'plugin' => 'system_menu_block:devel',
53       'region' => 'sidebar_first',
54       'id' => $block_id,
55       'theme' => $this->config('system.theme')->get('default'),
56       'label' => $this->randomMachineName(8),
57       'visibility' => array(),
58       'weight' => 0,
59     ]);
60     $block->save();
61
62     // Ensure that the menu and block instance depend on devel module.
63     $dependents = $config_manager->findConfigEntityDependents('module', ['devel']);
64     $this->assertTrue(isset($dependents['system.menu.devel']));
65     $this->assertTrue(isset($dependents['block.block.' . $block_id]));
66
67     $this->container->get('module_installer')->uninstall(['devel']);
68
69     // Ensure that the menu and block instance are deleted when the dependency
70     // is uninstalled.
71     $this->assertNull(Menu::load('devel'));
72     $this->assertNull(Block::load($block_id));
73
74     // Ensure that no config entities depend on devel once uninstalled.
75     $dependents = $config_manager->findConfigEntityDependents('module', ['devel']);
76     $this->assertFalse(isset($dependents['system.menu.devel']));
77     $this->assertFalse(isset($dependents['block.block.' . $block_id]));
78   }
79
80 }