TreeDataUnitTest.php

Definition of Drupal\system\Tests\Menu\TreeDataUnitTest.

Namespace

Drupal\system\Tests\Menu

File

drupal/core/modules/system/lib/Drupal/system/Tests/Menu/TreeDataUnitTest.php
View source
<?php

/**
 * @file
 * Definition of Drupal\system\Tests\Menu\TreeDataUnitTest.
 */
namespace Drupal\system\Tests\Menu;

use Drupal\simpletest\UnitTestBase;

/**
 * Menu tree data related tests.
 */
class TreeDataUnitTest extends UnitTestBase {

  /**
   * Dummy link structure acceptable for menu_tree_data().
   */
  var $links = array(
    1 => array(
      'mlid' => 1,
      'depth' => 1,
    ),
    2 => array(
      'mlid' => 2,
      'depth' => 1,
    ),
    3 => array(
      'mlid' => 3,
      'depth' => 2,
    ),
    4 => array(
      'mlid' => 4,
      'depth' => 3,
    ),
    5 => array(
      'mlid' => 5,
      'depth' => 1,
    ),
  );
  public static function getInfo() {
    return array(
      'name' => 'Menu tree generation',
      'description' => 'Tests recursive menu tree generation functions.',
      'group' => 'Menu',
    );
  }

  /**
   * Validate the generation of a proper menu tree hierarchy.
   */
  function testMenuTreeData() {
    $tree = menu_tree_data($this->links);

    // Validate that parent items #1, #2, and #5 exist on the root level.
    $this
      ->assertSameLink($this->links[1], $tree[1]['link'], 'Parent item #1 exists.');
    $this
      ->assertSameLink($this->links[2], $tree[2]['link'], 'Parent item #2 exists.');
    $this
      ->assertSameLink($this->links[5], $tree[5]['link'], 'Parent item #5 exists.');

    // Validate that child item #4 exists at the correct location in the hierarchy.
    $this
      ->assertSameLink($this->links[4], $tree[2]['below'][3]['below'][4]['link'], 'Child item #4 exists in the hierarchy.');
  }

  /**
   * Check that two menu links are the same by comparing the mlid.
   *
   * @param $link1
   *   A menu link item.
   * @param $link2
   *   A menu link item.
   * @param $message
   *   The message to display along with the assertion.
   * @return
   *   TRUE if the assertion succeeded, FALSE otherwise.
   */
  protected function assertSameLink($link1, $link2, $message = '') {
    return $this
      ->assert($link1['mlid'] == $link2['mlid'], $message ?: 'First link is identical to second link');
  }

}

Classes

Namesort descending Description
TreeDataUnitTest Menu tree data related tests.