function MenuTestCase::testUnpublishedNodeMenuItem

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

File

modules/menu/menu.test, line 645

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.