public function DeprecatedServicesTest::testAliasManagerSharedState in Drupal 8
Test that the new alias manager and the legacy ones share the same state.
@expectedDeprecation The \Drupal\Core\Path\AliasManager class is deprecated in drupal:8.8.0 and is removed from drupal:9.0.0. Instead, use \Drupal\path_alias\AliasManager. See https://drupal.org/node/3092086
File
- core/
modules/ path_alias/ tests/ src/ Kernel/ DeprecatedServicesTest.php, line 105
Class
- DeprecatedServicesTest
- Tests deprecation of path alias core services and the related BC logic.
Namespace
Drupal\Tests\path_alias\KernelCode
public function testAliasManagerSharedState() {
/** @var \Drupal\Core\Path\AliasManager $legacy_alias_manager */
$legacy_alias_manager = $this->container
->get('path.alias_manager');
/** @var \Drupal\path_alias\AliasManager $alias_manager */
$alias_manager = $this->container
->get('path_alias.manager');
$cache_key = $this
->randomMachineName();
$alias_manager
->setCacheKey($cache_key);
$this
->assertSharedProperty('preload-paths:' . $cache_key, $legacy_alias_manager, 'cacheKey');
$invalid_alias = '/' . $this
->randomMachineName();
$alias_manager
->getPathByAlias($invalid_alias);
$this
->assertSharedProperty([
'en' => [
$invalid_alias => TRUE,
],
], $legacy_alias_manager, 'noPath');
$this
->assertSharedProperty(FALSE, $legacy_alias_manager, 'preloadedPathLookups');
/** @var \Drupal\path_alias\Entity\PathAlias $alias */
$alias = PathAlias::create([
'path' => '/' . $this
->randomMachineName(),
'alias' => $invalid_alias . '2',
]);
$alias
->save();
$this
->assertSharedProperty([], $legacy_alias_manager, 'preloadedPathLookups');
/** @var \Drupal\Core\State\StateInterface $state */
$state = $this->container
->get('state');
$state
->set('router.path_roots', [
ltrim($alias
->getPath(), '/'),
]);
$alias_manager
->getAliasByPath($alias
->getPath());
$this
->assertSharedProperty([
'en' => [
$alias
->getPath() => $alias
->getAlias(),
],
], $legacy_alias_manager, 'lookupMap');
$invalid_path = $alias
->getPath() . '/' . $this
->randomMachineName();
$alias_manager
->getAliasByPath($invalid_path);
$this
->assertSharedProperty([
'en' => [
$invalid_path => TRUE,
],
], $legacy_alias_manager, 'noAlias');
}