function AliasManagerTest::testGetAliasByPathUncachedMissWithAlias

Same name in other branches
  1. 9 core/modules/path_alias/tests/src/Unit/AliasManagerTest.php \Drupal\Tests\path_alias\Unit\AliasManagerTest::testGetAliasByPathUncachedMissWithAlias()
  2. 10 core/modules/path_alias/tests/src/Unit/AliasManagerTest.php \Drupal\Tests\path_alias\Unit\AliasManagerTest::testGetAliasByPathUncachedMissWithAlias()
  3. 11.x core/modules/path_alias/tests/src/Unit/AliasManagerTest.php \Drupal\Tests\path_alias\Unit\AliasManagerTest::testGetAliasByPathUncachedMissWithAlias()

Tests the getAliasByPath cache with an unpreloaded path with alias.

@covers ::getAliasByPath @covers ::writeCache

File

core/modules/path_alias/tests/src/Unit/AliasManagerTest.php, line 491

Class

AliasManagerTest
@coversDefaultClass \Drupal\path_alias\AliasManager @group path_alias

Namespace

Drupal\Tests\path_alias\Unit

Code

public function testGetAliasByPathUncachedMissWithAlias() {
    $path_part1 = $this->randomMachineName();
    $path_part2 = $this->randomMachineName();
    $path = '/' . $path_part1 . '/' . $path_part2;
    $cached_path = $this->randomMachineName();
    $cached_no_alias_path = $this->randomMachineName();
    $cached_alias = $this->randomMachineName();
    $new_alias = $this->randomMachineName();
    $language = $this->setUpCurrentLanguage();
    $cached_paths = [
        $language->getId() => [
            $cached_path,
            $cached_no_alias_path,
        ],
    ];
    $this->cache
        ->expects($this->once())
        ->method('get')
        ->with($this->cacheKey)
        ->will($this->returnValue((object) [
        'data' => $cached_paths,
    ]));
    // Simulate a request so that the preloaded paths are fetched.
    $this->aliasManager
        ->setCacheKey($this->path);
    $this->aliasWhitelist
        ->expects($this->any())
        ->method('get')
        ->with($path_part1)
        ->will($this->returnValue(TRUE));
    $this->aliasRepository
        ->expects($this->once())
        ->method('preloadPathAlias')
        ->with($cached_paths[$language->getId()], $language->getId())
        ->will($this->returnValue([
        $cached_path => $cached_alias,
    ]));
    $this->aliasRepository
        ->expects($this->once())
        ->method('lookupBySystemPath')
        ->with($path, $language->getId())
        ->will($this->returnValue([
        'alias' => $new_alias,
    ]));
    $this->assertEquals($new_alias, $this->aliasManager
        ->getAliasByPath($path));
    // Call it twice to test the static cache.
    $this->assertEquals($new_alias, $this->aliasManager
        ->getAliasByPath($path));
    // There is already a cache entry, so this should not write out to the
    // cache.
    $this->cache
        ->expects($this->never())
        ->method('set');
    $this->aliasManager
        ->writeCache();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.