function MenuActiveTrailTest::testGetActiveTrailIds
Tests getActiveTrailIds().
@legacy-covers ::getActiveTrailIds
Attributes
#[DataProvider('provider')]
File
-
core/
tests/ Drupal/ Tests/ Core/ Menu/ MenuActiveTrailTest.php, line 220
Class
- MenuActiveTrailTest
- Tests the active menu trail service.
Namespace
Drupal\Tests\Core\MenuCode
public function testGetActiveTrailIds(Request $request, $links, $menu_name, $expected_link, $expected_trail) : void {
$expected_trail_ids = array_combine($expected_trail, $expected_trail);
$this->requestStack
->push($request);
if ($links !== FALSE) {
// We expect exactly two calls, one for the first call, and one after the
// cache clearing below.
$this->menuLinkManager
->expects($this->exactly(3))
->method('loadLinksByRoute')
->with('baby_llama')
->willReturn($links);
if ($expected_link !== NULL) {
$this->menuLinkManager
->expects($this->exactly(3))
->method('getParentIds')
->willReturnMap([
[
$expected_link->getPluginId(),
$expected_trail_ids,
],
]);
}
}
// Call out the same twice in order to ensure that static caching works.
$this->assertSame($expected_trail_ids, $this->menuActiveTrail
->getActiveTrailIds($menu_name));
$this->assertSame($expected_trail_ids, $this->menuActiveTrail
->getActiveTrailIds($menu_name));
$this->cacheTagsInvalidator
->expects($this->exactly(2))
->method('invalidateTags')
->willReturnCallback(fn($tags) => match ($tags) { [
'config:system.menu.' . $menu_name,
] => NULL,
[
'config:system.menu.' . $menu_name,
'config:system.menu.' . $menu_name,
'config:menu_list',
'menu_link_content_list',
] => NULL,
});
$this->menuActiveTrail
->clear();
$this->assertSame($expected_trail_ids, $this->menuActiveTrail
->getActiveTrailIds($menu_name));
// Test without menu name.
$this->assertSame($expected_trail_ids, $this->menuActiveTrail
->getActiveTrailIds(NULL));
$this->assertSame($expected_trail_ids, $this->menuActiveTrail
->getActiveTrailIds(NULL));
$this->menuActiveTrail
->clear();
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.