You are here

function MenuTrailTestCase::testMenuTreeSetPath in Drupal 7

Tests active trails are properly affected by menu_tree_set_path().

File

modules/simpletest/tests/menu.test, line 1588
Provides SimpleTests for menu.inc.

Class

MenuTrailTestCase
Tests active menu trails.

Code

function testMenuTreeSetPath() {
  $home = array(
    '<front>' => 'Home',
  );
  $config_tree = array(
    'admin' => t('Administration'),
    'admin/config' => t('Configuration'),
  );
  $config = $home + $config_tree;

  // The menu_test_menu_tree_set_path system variable controls whether or not
  // the menu_test_menu_trail_callback() callback (used by all paths in these
  // tests) issues an overriding call to menu_trail_set_path().
  $test_menu_path = array(
    'menu_name' => 'management',
    'path' => 'admin/config/system/site-information',
  );
  $breadcrumb = $home + array(
    'menu-test' => t('Menu test root'),
  );
  $tree = array(
    'menu-test' => t('Menu test root'),
    'menu-test/menu-trail' => t('Menu trail - Case 1'),
  );

  // Test the tree generation for the Navigation menu.
  variable_del('menu_test_menu_tree_set_path');
  $this
    ->assertBreadcrumb('menu-test/menu-trail', $breadcrumb, t('Menu trail - Case 1'), $tree);

  // Override the active trail for the Management tree; it should not affect
  // the Navigation tree.
  variable_set('menu_test_menu_tree_set_path', $test_menu_path);
  $this
    ->assertBreadcrumb('menu-test/menu-trail', $breadcrumb, t('Menu trail - Case 1'), $tree);
  $breadcrumb = $config + array(
    'admin/config/development' => t('Development'),
  );
  $tree = $config_tree + array(
    'admin/config/development' => t('Development'),
    'admin/config/development/menu-trail' => t('Menu trail - Case 2'),
  );
  $override_breadcrumb = $config + array(
    'admin/config/system' => t('System'),
    'admin/config/system/site-information' => t('Site information'),
  );
  $override_tree = $config_tree + array(
    'admin/config/system' => t('System'),
    'admin/config/system/site-information' => t('Site information'),
  );

  // Test the tree generation for the Management menu.
  variable_del('menu_test_menu_tree_set_path');
  $this
    ->assertBreadcrumb('admin/config/development/menu-trail', $breadcrumb, t('Menu trail - Case 2'), $tree);

  // Override the active trail for the Management tree; it should affect the
  // breadcrumbs and Management tree.
  variable_set('menu_test_menu_tree_set_path', $test_menu_path);
  $this
    ->assertBreadcrumb('admin/config/development/menu-trail', $override_breadcrumb, t('Menu trail - Case 2'), $override_tree);
}