You are here

public function PathHooksTest::testPathHooks in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/path_alias/tests/src/Kernel/PathHooksTest.php \Drupal\Tests\path_alias\Kernel\PathHooksTest::testPathHooks()

Tests that the PathAlias entity clears caches correctly.

@covers ::postSave @covers ::postDelete

File

core/modules/path_alias/tests/src/Kernel/PathHooksTest.php, line 37

Class

PathHooksTest
@coversDefaultClass \Drupal\path_alias\Entity\PathAlias

Namespace

Drupal\Tests\path_alias\Kernel

Code

public function testPathHooks() {
  $path_alias = PathAlias::create([
    'path' => '/' . $this
      ->randomMachineName(),
    'alias' => '/' . $this
      ->randomMachineName(),
  ]);

  // Check \Drupal\path_alias\Entity\PathAlias::postSave() for new path alias
  // entities.
  $alias_manager = $this
    ->prophesize(AliasManagerInterface::class);
  $alias_manager
    ->cacheClear(Argument::any())
    ->shouldBeCalledTimes(1);
  $alias_manager
    ->cacheClear($path_alias
    ->getPath())
    ->shouldBeCalledTimes(1);
  \Drupal::getContainer()
    ->set('path_alias.manager', $alias_manager
    ->reveal());
  $path_alias
    ->save();
  $new_source = '/' . $this
    ->randomMachineName();

  // Check \Drupal\path_alias\Entity\PathAlias::postSave() for existing path
  // alias entities.
  $alias_manager = $this
    ->prophesize(AliasManagerInterface::class);
  $alias_manager
    ->cacheClear(Argument::any())
    ->shouldBeCalledTimes(2);
  $alias_manager
    ->cacheClear($path_alias
    ->getPath())
    ->shouldBeCalledTimes(1);
  $alias_manager
    ->cacheClear($new_source)
    ->shouldBeCalledTimes(1);
  \Drupal::getContainer()
    ->set('path_alias.manager', $alias_manager
    ->reveal());
  $path_alias
    ->setPath($new_source);
  $path_alias
    ->save();

  // Check \Drupal\path_alias\Entity\PathAlias::postDelete().
  $alias_manager = $this
    ->prophesize(AliasManagerInterface::class);
  $alias_manager
    ->cacheClear(Argument::any())
    ->shouldBeCalledTimes(1);
  $alias_manager
    ->cacheClear($new_source)
    ->shouldBeCalledTimes(1);
  \Drupal::getContainer()
    ->set('path_alias.manager', $alias_manager
    ->reveal());
  $path_alias
    ->delete();
}