entity_hierarchy-8.x-2.24/modules/entity_hierarchy_microsite/tests/src/Functional/MicrositeMenuBlockTest.php
modules/entity_hierarchy_microsite/tests/src/Functional/MicrositeMenuBlockTest.php
<?php
namespace Drupal\Tests\entity_hierarchy_microsite\Functional;
use Drupal\entity_hierarchy_microsite\Entity\Microsite;
use Drupal\Tests\entity_hierarchy_microsite\Traits\MenuRebuildTrait;
/**
* Defines a class for testing microsite menu block.
*
* @group entity_hierarchy_microsite
*/
class MicrositeMenuBlockTest extends MicrositeFunctionalTestBase {
use MenuRebuildTrait;
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->drupalPlaceBlock('entity_hierarchy_microsite_menu', [
'field' => self::FIELD_NAME,
'id' => 'microsite_menu',
'context_mapping' => [
'node' => '@node.node_route_context:node',
],
'region' => 'content',
'visibility' => [
'entity_hierarchy_microsite_child' => [
'id' => 'entity_hierarchy_microsite_child',
'field' => self::FIELD_NAME,
'negate' => FALSE,
'context_mapping' => [
'node' => '@node.node_route_context:node',
],
],
],
]);
}
/**
* Tests menu block.
*/
public function testMenuBlock() {
$logo = $this->createImageMedia();
$root = $this->createTestEntity(NULL, 'Root');
$children = $this->createChildEntities($root->id());
$microsite = Microsite::create([
'name' => $root->label(),
'home' => $root,
'logo' => $logo,
'generate_menu' => TRUE,
]);
$microsite->save();
$this->triggerMenuRebuild();
$this->drupalGet($root->toUrl());
$assert = $this->assertSession();
$menu = $assert->elementExists('css', '#block-microsite-menu ul');
$links = $menu->findAll('css', 'li a');
$this->assertCount(5, $links);
foreach ($children as $child) {
$this->assertNotEmpty($menu->find('named', ['link', $child->label()]));
$assert->linkExists($child->label());
$xpath = $this->assertSession()->buildXPathQuery('//a[contains(@href, :href)]', [':href' => $child->toUrl()->toString()]);
$this->assertNotEmpty($menu->find('xpath', $xpath));
}
}
}
