function MenuTestCase::testUnpublishedNodeMenuItem

Tests that menu admin lists can include menu items for unpublished nodes.

File

modules/menu/menu.test, line 641

Class

MenuTestCase
@file Tests for menu.module.

Code

function testUnpublishedNodeMenuItem() {
  // Log in as an administrator who can view unpublished nodes.
  $menu_and_node_admin_user = $this->drupalCreateUser(array(
    'bypass node access',
    'administer menu',
  ));
  $this->drupalLogin($menu_and_node_admin_user);
  // Create an unpublished node with a menu link.
  $title = $this->randomName();
  $node = $this->drupalCreateNode(array(
    'type' => 'article',
    'title' => $title,
    'status' => NODE_NOT_PUBLISHED,
  ));
  $edit = array(
    'link_path' => 'node/' . $node->nid,
    'link_title' => $title,
    'description' => '',
    'enabled' => TRUE,
    'expanded' => TRUE,
    'parent' => 'navigation:0',
    'weight' => '0',
  );
  $this->drupalPost('admin/structure/menu/manage/navigation/add', $edit, t('Save'));
  // Verify that the administrator can see the menu link (with a label
  // indicating that it is unpublished) on the menu management page.
  $this->drupalGet('admin/structure/menu/manage/navigation');
  $this->assertText($title . ' (unpublished)', 'Menu link to unpublished node is visible to users with "bypass node access" permission.');
  // Verify that a user who cannot view unpublished nodes does not see the
  // menu link on the menu management page.
  $menu_admin_user = $this->drupalCreateUser(array(
    'administer menu',
  ));
  $this->drupalLogin($menu_admin_user);
  $this->drupalGet('admin/structure/menu/manage/navigation');
  $this->assertResponse(200);
  $this->assertNoText($title, 'Menu link to unpublished node is not visible to users without the "bypass node access" permission.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.