function HelpTopicTest::testHelp

Same name and namespace in other branches
  1. 9 core/modules/help_topics/tests/src/Functional/HelpTopicTest.php \Drupal\Tests\help_topics\Functional\HelpTopicTest::testHelp()
  2. 8.9.x core/modules/help_topics/tests/src/Functional/HelpTopicTest.php \Drupal\Tests\help_topics\Functional\HelpTopicTest::testHelp()
  3. 11.x core/modules/help/tests/src/Functional/HelpTopicTest.php \Drupal\Tests\help\Functional\HelpTopicTest::testHelp()

Tests the main help page and individual pages for topics.

File

core/modules/help/tests/src/Functional/HelpTopicTest.php, line 97

Class

HelpTopicTest
Verifies help topic display and user access to help based on permissions.

Namespace

Drupal\Tests\help\Functional

Code

public function testHelp() : void {
  $session = $this->assertSession();
  // Log in the regular user.
  $this->drupalLogin($this->anyUser);
  $this->verifyHelp(403);
  // Log in the admin user.
  $this->drupalLogin($this->adminUser);
  $this->verifyHelp();
  $this->verifyBreadCrumb();
  // Verify that help topics text appears on admin/help, and cache tags.
  $this->drupalGet('admin/help');
  $session->responseContains('<h2>Topics</h2>');
  $session->pageTextContains('Topics can be provided by modules or themes');
  $session->responseHeaderContains('X-Drupal-Cache-Tags', 'core.extension');
  // Verify links for help topics and order.
  $page_text = $this->getTextContent();
  $start = strpos($page_text, 'Topics can be provided');
  $pos = $start;
  foreach ($this->getTopicList() as $info) {
    $name = $info['name'];
    $session->linkExists($name);
    $new_pos = strpos($page_text, $name, $start);
    $this->assertGreaterThan($pos, $new_pos, "Order of {$name} is not correct on page");
    $pos = $new_pos;
  }
  // Ensure the plugin manager alter hook works as expected.
  $session->linkExists('ABC Help Test module');
  \Drupal::state()->set('help_topics_test.test:top_level', FALSE);
  \Drupal::service('plugin.manager.help_topic')->clearCachedDefinitions();
  $this->drupalGet('admin/help');
  $session->linkNotExists('ABC Help Test module');
  \Drupal::state()->set('help_topics_test.test:top_level', TRUE);
  \Drupal::service('plugin.manager.help_topic')->clearCachedDefinitions();
  $this->drupalGet('admin/help');
  // Ensure all the expected links are present before uninstalling.
  $session->linkExists('ABC Help Test module');
  $session->linkExists('ABC Help Test');
  $session->linkExists('XYZ Help Test theme');
  // Uninstall the test module and verify the topics are gone, after
  // reloading page.
  $this->container
    ->get('module_installer')
    ->uninstall([
    'help_topics_test',
  ]);
  $this->drupalGet('admin/help');
  $session->linkNotExists('ABC Help Test module');
  $session->linkNotExists('ABC Help Test');
  $session->linkExists('XYZ Help Test theme');
  // Uninstall the test theme and verify the topic is gone.
  $this->container
    ->get('theme_installer')
    ->uninstall([
    'help_topics_test_theme',
  ]);
  $this->drupalGet('admin/help');
  $session->linkNotExists('XYZ Help Test theme');
}

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