function UserAccountLinksTest::testDisabledAccountLink

Tests disabling the 'My account' link.

File

core/modules/user/tests/src/Functional/UserAccountLinksTest.php, line 79

Class

UserAccountLinksTest
Tests user-account links.

Namespace

Drupal\Tests\user\Functional

Code

public function testDisabledAccountLink() {
  // Create an admin user and log in.
  $this->drupalLogin($this->drupalCreateUser([
    'access administration pages',
    'administer menu',
  ]));
  // Verify that the 'My account' link exists before we check for its
  // disappearance.
  $link = $this->xpath('//ul[@class=:menu_class]/li/a[contains(@href, :href) and text()=:text]', [
    ':menu_class' => 'menu',
    ':href' => 'user',
    ':text' => 'My account',
  ]);
  $this->assertCount(1, $link, 'My account link is in the secondary menu.');
  // Verify that the 'My account' link is enabled. Do not assume the value of
  // auto-increment is 1. Use XPath to obtain input element id and name using
  // the consistent label text.
  $this->drupalGet('admin/structure/menu/manage/account');
  $label = $this->xpath('//label[contains(.,:text)]/@for', [
    ':text' => 'Enable My account menu link',
  ]);
  $this->assertFieldChecked($label[0]->getText(), "The 'My account' link is enabled by default.");
  // Disable the 'My account' link.
  $edit['links[menu_plugin_id:user.page][enabled]'] = FALSE;
  $this->drupalPostForm('admin/structure/menu/manage/account', $edit, t('Save'));
  // Get the homepage.
  $this->drupalGet('<front>');
  // Verify that the 'My account' link does not appear when disabled.
  $link = $this->xpath('//ul[@class=:menu_class]/li/a[contains(@href, :href) and text()=:text]', [
    ':menu_class' => 'menu',
    ':href' => 'user',
    ':text' => 'My account',
  ]);
  $this->assertCount(0, $link, 'My account link is not in the secondary menu.');
}

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