TreeOutputTest.php 4.3 KB
Newer Older
1 2 3 4 5 6 7 8 9
<?php

/**
 * @file
 * Definition of Drupal\system\Tests\Menu\TreeOutputTest.
 */

namespace Drupal\system\Tests\Menu;

10
use Drupal\simpletest\DrupalUnitTestBase;
11 12 13 14

/**
 * Menu tree output related tests.
 */
15 16
class TreeOutputTest extends DrupalUnitTestBase {

17
  public static $modules = array('system', 'menu_link', 'field');
18

19 20 21
  /**
   * Dummy link structure acceptable for menu_tree_output().
   */
22
  protected $tree_data = array();
23 24 25 26 27 28 29 30 31 32 33

  public static function getInfo() {
    return array(
      'name' => 'Menu tree output',
      'description' => 'Tests menu tree output functions.',
      'group' => 'Menu',
    );
  }

  function setUp() {
    parent::setUp();
34

35
    $this->installSchema('system', array('router', 'menu_router'));
36 37 38 39 40 41
  }

  /**
   * Validate the generation of a proper menu tree output.
   */
  function testMenuTreeData() {
42
    $storage_controller = $this->container->get('entity.manager')->getStorageController('menu_link');
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
    // @todo Prettify this tree buildup code, it's very hard to read.
    $this->tree_data = array(
      '1'=> array(
        'link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 1, 'hidden' => 0, 'has_children' => 1, 'title' => 'Item 1', 'in_active_trail' => 1, 'access' => 1, 'href' => 'a', 'localized_options' => array('attributes' => array('title' =>'')))),
        'below' => array(
          '2' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 2, 'hidden' => 0, 'has_children' => 1, 'title' => 'Item 2', 'in_active_trail' => 1, 'access' => 1, 'href' => 'a/b', 'localized_options' => array('attributes' => array('title' =>'')))),
            'below' => array(
              '3' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 3, 'hidden' => 0, 'has_children' => 0, 'title' => 'Item 3', 'in_active_trail' => 0, 'access' => 1, 'href' => 'a/b/c', 'localized_options' => array('attributes' => array('title' =>'')))),
                'below' => array() ),
              '4' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 4, 'hidden' => 0, 'has_children' => 0, 'title' => 'Item 4', 'in_active_trail' => 0, 'access' => 1, 'href' => 'a/b/d', 'localized_options' => array('attributes' => array('title' =>'')))),
                'below' => array() )
              )
            )
          )
        ),
      '5' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 5, 'hidden' => 1, 'has_children' => 0, 'title' => 'Item 5', 'in_active_trail' => 0, 'access' => 1, 'href' => 'e', 'localized_options' => array('attributes' => array('title' =>'')))), 'below' => array()),
      '6' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 6, 'hidden' => 0, 'has_children' => 0, 'title' => 'Item 6', 'in_active_trail' => 0, 'access' => 0, 'href' => 'f', 'localized_options' => array('attributes' => array('title' =>'')))), 'below' => array()),
      '7' => array('link' => $storage_controller->create(array('menu_name' => 'main-menu', 'mlid' => 7, 'hidden' => 0, 'has_children' => 0, 'title' => 'Item 7', 'in_active_trail' => 0, 'access' => 1, 'href' => 'g', 'localized_options' => array('attributes' => array('title' =>'')))), 'below' => array())
    );

63 64 65
    $output = menu_tree_output($this->tree_data);

    // Validate that the - in main-menu is changed into an underscore
66 67
    $this->assertEqual( $output['1']['#theme'], 'menu_link__main_menu', 'Hyphen is changed to a dash on menu_link');
    $this->assertEqual( $output['#theme_wrappers'][0], 'menu_tree__main_menu', 'Hyphen is changed to a dash on menu_tree wrapper');
68
    // Looking for child items in the data
69 70
    $this->assertEqual( $output['1']['#below']['2']['#href'], 'a/b', 'Checking the href on a child item');
    $this->assertTrue( in_array('active-trail',$output['1']['#below']['2']['#attributes']['class']) , 'Checking the active trail class');
71
    // Validate that the hidden and no access items are missing
72 73
    $this->assertFalse( isset($output['5']), 'Hidden item should be missing');
    $this->assertFalse( isset($output['6']), 'False access should be missing');
74
    // Item 7 is after a couple hidden items. Just to make sure that 5 and 6 are skipped and 7 still included
75
    $this->assertTrue( isset($output['7']), 'Item after hidden items is present');
76 77
  }
}