fcbb499979cc261ff78d54080e36bb153d5f1fbb
[yaffs-website] / web / core / modules / system / tests / src / Kernel / PathHooksTest.php
1 <?php
2
3 namespace Drupal\Tests\system\Kernel;
4
5 use Drupal\Core\Language\LanguageInterface;
6 use Drupal\Core\Path\AliasManagerInterface;
7 use Drupal\KernelTests\KernelTestBase;
8 use Prophecy\Argument;
9
10 /**
11  * @group Drupal
12  */
13 class PathHooksTest extends KernelTestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   static public $modules = ['system'];
19
20   /**
21    * Test system_path_*() correctly clears caches.
22    */
23   public function testPathHooks() {
24     $source = '/' . $this->randomMachineName();
25     $alias = '/' . $this->randomMachineName();
26
27     // Check system_path_insert();
28     $alias_manager = $this->prophesize(AliasManagerInterface::class);
29     $alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);
30     $alias_manager->cacheClear($source)->shouldBeCalledTimes(1);
31     \Drupal::getContainer()->set('path.alias_manager', $alias_manager->reveal());
32     $alias_storage = \Drupal::service('path.alias_storage');
33     $alias_storage->save($source, $alias);
34
35     $new_source = '/' . $this->randomMachineName();
36     $path = $alias_storage->load(['source' => $source]);
37
38     // Check system_path_update();
39     $alias_manager = $this->prophesize(AliasManagerInterface::class);
40     $alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(2);
41     $alias_manager->cacheClear($source)->shouldBeCalledTimes(1);
42     $alias_manager->cacheClear($new_source)->shouldBeCalledTimes(1);
43     \Drupal::getContainer()->set('path.alias_manager', $alias_manager->reveal());
44     $alias_storage->save($new_source, $alias, LanguageInterface::LANGCODE_NOT_SPECIFIED, $path['pid']);
45
46     // Check system_path_delete();
47     $alias_manager = $this->prophesize(AliasManagerInterface::class);
48     $alias_manager->cacheClear(Argument::any())->shouldBeCalledTimes(1);
49     $alias_manager->cacheClear($new_source)->shouldBeCalledTimes(1);
50     \Drupal::getContainer()->set('path.alias_manager', $alias_manager->reveal());
51     $alias_storage->delete(['pid' => $path['pid']]);
52
53   }
54
55 }