class BasicCheeseburgerMenuTest in Cheeseburger Menu 5.0.x
Test description.
@group cheeseburger_menu
Hierarchy
- class \Drupal\Tests\cheeseburger_menu\Kernel\BasicCheeseburgerMenuTest extends \Drupal\Tests\token\Kernel\KernelTestBase
Expanded class hierarchy of BasicCheeseburgerMenuTest
File
- tests/
src/ Kernel/ BasicCheeseburgerMenuTest.php, line 13
Namespace
Drupal\Tests\cheeseburger_menu\KernelView source
class BasicCheeseburgerMenuTest extends KernelTestBase {
const TEST_MENU_ID = 'cheese_test_menu';
/**
* Menu array to create from.
*
* @var array
*/
public static $menuArray = [
'1' => [
'1' => [
'1' => [],
],
'2' => [],
'3' => [],
],
'2' => [],
'3' => [
'1' => [],
],
];
/**
* {@inheritdoc}
*/
public static $modules = [
'system',
'link',
'user',
'menu_link_content',
'cheeseburger_menu',
'taxonomy',
'text',
];
/**
* {@inheritDoc}
*/
protected function setUp() {
parent::setUp();
$this
->installEntitySchema('menu_link_content');
$this
->installEntitySchema('taxonomy_term');
$role = $this->container
->get('entity_type.manager')
->getStorage('user_role')
->create([
'id' => 'anonymous',
'label' => 'anonymous',
]);
$role
->grantPermission('access content');
$role
->save();
}
/**
* Test callback.
*/
public function testCheeseburgerMenuStructure() {
$this
->createMenu();
/** @var \Drupal\cheeseburger_menu\CheeseburgerMenu $cheeseburger_menu */
$cheeseburger_menu = $this->container
->get('cheeseburger_menu.service')
->buildMenu([
'id' => self::TEST_MENU_ID,
'settings' => [
'max_depth' => 0,
'default_expanded' => FALSE,
'override_title' => FALSE,
'show_title_in_navigation' => TRUE,
'show_title_above_menu' => TRUE,
'icon' => '',
'show_links_in_navigation' => FALSE,
],
'weight' => 1,
]);
foreach ($cheeseburger_menu as $cheeseburger_menu_item) {
/** @var \Drupal\cheeseburger_menu\CheeseburgerMenuItem $cheeseburger_menu_item */
$this
->assertMenuItem($cheeseburger_menu_item, self::$menuArray);
}
}
/**
* Test callback.
*/
public function testCheeseburgerVocabularyStructure() {
$this
->createVocabulary();
/** @var \Drupal\cheeseburger_menu\CheeseburgerMenu $cheeseburger_menu */
$cheeseburger_menu = $this->container
->get('cheeseburger_menu.service')
->buildMenuFromVocabulary([
'id' => self::TEST_MENU_ID,
'settings' => [
'max_depth' => 0,
'default_expanded' => FALSE,
'override_title' => FALSE,
'show_title_in_navigation' => TRUE,
'show_title_above_menu' => TRUE,
'icon' => '',
'show_links_in_navigation' => FALSE,
],
'weight' => 1,
]);
$has_item = FALSE;
foreach ($cheeseburger_menu as $cheeseburger_menu_item) {
$has_item = TRUE;
/** @var \Drupal\cheeseburger_menu\CheeseburgerMenuItem $cheeseburger_menu_item */
$this
->assertMenuItem($cheeseburger_menu_item, self::$menuArray);
}
$this
->assertTrue($has_item);
}
/**
* Asserts menu item from created array.
*/
public function assertMenuItem(CheeseburgerMenuItem $cheeseburger_menu_item, $menu_array) {
$depth = explode('.', $cheeseburger_menu_item
->getTitle());
foreach ($depth as $number) {
$this
->assertTrue(isset($menu_array[$number]));
}
foreach ($cheeseburger_menu_item
->getChildren() as $cheeseburger_menu_item_child) {
$this
->assertMenuItem($cheeseburger_menu_item_child, $menu_array);
}
}
/**
* Create menu.
*/
private function createMenu() {
$this->container
->get('entity_type.manager')
->getStorage('menu')
->create([
'id' => self::TEST_MENU_ID,
'label' => 'Cheese test menu',
])
->save();
$this
->createMenuLinkContent(self::$menuArray);
}
/**
* Creates menu link content from array.
*/
private function createMenuLinkContent(array $names, $prefix = '', $parent = NULL) {
foreach ($names as $menu_name => $children) {
$menu = $this->container
->get('entity_type.manager')
->getStorage('menu_link_content')
->create([
'title' => empty($prefix) ? $menu_name : "{$prefix}.{$menu_name}",
'menu_name' => self::TEST_MENU_ID,
'link' => [
'uri' => 'route:<nolink>',
],
'weight' => $menu_name,
'parent' => $parent,
]);
$menu
->save();
$this
->createMenuLinkContent($children, empty($prefix) ? $menu_name : "{$prefix}.{$menu_name}", "menu_link_content:{$menu->uuid()}");
}
}
/**
* Creates vocabulary and terms used in testing.
*/
private function createVocabulary() {
$this->container
->get('entity_type.manager')
->getStorage('taxonomy_vocabulary')
->create([
'vid' => self::TEST_MENU_ID,
'name' => 'Cheese test menu',
])
->save();
$this
->createTaxonomyTerm(self::$menuArray);
}
/**
* Creates taxonomy term witch schemed names.
*/
private function createTaxonomyTerm(array $names, $prefix = '', $parent = NULL) {
foreach ($names as $menu_name => $children) {
$taxonomy_term = $this->container
->get('entity_type.manager')
->getStorage('taxonomy_term')
->create([
'name' => empty($prefix) ? $menu_name : "{$prefix}.{$menu_name}",
'vid' => self::TEST_MENU_ID,
'weight' => $menu_name,
'parent' => isset($parent) ? [
'target_id' => $parent,
] : NULL,
]);
$taxonomy_term
->save();
$this
->createTaxonomyTerm($children, empty($prefix) ? $menu_name : "{$prefix}.{$menu_name}", $taxonomy_term
->id());
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BasicCheeseburgerMenuTest:: |
public static | property | Menu array to create from. | |
BasicCheeseburgerMenuTest:: |
public static | property | ||
BasicCheeseburgerMenuTest:: |
public | function | Asserts menu item from created array. | |
BasicCheeseburgerMenuTest:: |
private | function | Create menu. | |
BasicCheeseburgerMenuTest:: |
private | function | Creates menu link content from array. | |
BasicCheeseburgerMenuTest:: |
private | function | Creates taxonomy term witch schemed names. | |
BasicCheeseburgerMenuTest:: |
private | function | Creates vocabulary and terms used in testing. | |
BasicCheeseburgerMenuTest:: |
protected | function | ||
BasicCheeseburgerMenuTest:: |
public | function | Test callback. | |
BasicCheeseburgerMenuTest:: |
public | function | Test callback. | |
BasicCheeseburgerMenuTest:: |
constant |