You are here

private function ForumTest::doAdminTests in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/forum/tests/src/Functional/ForumTest.php \Drupal\Tests\forum\Functional\ForumTest::doAdminTests()

Runs admin tests on the admin user.

Parameters

object $user: The logged-in user.

1 call to ForumTest::doAdminTests()
ForumTest::testForum in core/modules/forum/tests/src/Functional/ForumTest.php
Tests forum functionality through the admin and user interfaces.

File

core/modules/forum/tests/src/Functional/ForumTest.php, line 313

Class

ForumTest
Tests for forum.module.

Namespace

Drupal\Tests\forum\Functional

Code

private function doAdminTests($user) {

  // Log in the user.
  $this
    ->drupalLogin($user);

  // Add forum to the Tools menu.
  $edit = [];
  $this
    ->drupalGet('admin/structure/menu/manage/tools');
  $this
    ->submitForm($edit, 'Save');
  $this
    ->assertSession()
    ->statusCodeEquals(200);

  // Edit forum taxonomy.
  // Restoration of the settings fails and causes subsequent tests to fail.
  $this
    ->editForumVocabulary();

  // Create forum container.
  $this->forumContainer = $this
    ->createForum('container');

  // Verify "edit container" link exists and functions correctly.
  $this
    ->drupalGet('admin/structure/forum');

  // Verify help text is shown.
  $this
    ->assertSession()
    ->pageTextContains('Forums contain forum topics. Use containers to group related forums');

  // Verify action links are there.
  $this
    ->assertSession()
    ->linkExists('Add forum');
  $this
    ->assertSession()
    ->linkExists('Add container');
  $this
    ->clickLink('edit container');
  $this
    ->assertSession()
    ->pageTextContains('Edit container');

  // Create forum inside the forum container.
  $this->forum = $this
    ->createForum('forum', $this->forumContainer['tid']);

  // Verify the "edit forum" link exists and functions correctly.
  $this
    ->drupalGet('admin/structure/forum');
  $this
    ->clickLink('edit forum');
  $this
    ->assertSession()
    ->pageTextContains('Edit forum');

  // Navigate back to forum structure page.
  $this
    ->drupalGet('admin/structure/forum');

  // Create second forum in container, destined to be deleted below.
  $delete_forum = $this
    ->createForum('forum', $this->forumContainer['tid']);

  // Save forum overview.
  $this
    ->drupalGet('admin/structure/forum/');
  $this
    ->submitForm([], 'Save');
  $this
    ->assertSession()
    ->pageTextContains('The configuration options have been saved.');

  // Delete this second forum.
  $this
    ->deleteForum($delete_forum['tid']);

  // Create forum at the top (root) level.
  $this->rootForum = $this
    ->createForum('forum');

  // Test vocabulary form alterations.
  $this
    ->drupalGet('admin/structure/taxonomy/manage/forums');
  $this
    ->assertSession()
    ->buttonExists('Save');
  $this
    ->assertSession()
    ->buttonNotExists('Delete');

  // Test term edit form alterations.
  $this
    ->drupalGet('taxonomy/term/' . $this->forumContainer['tid'] . '/edit');

  // Test parent field been hidden by forum module.
  $this
    ->assertSession()
    ->fieldNotExists('parent[]');

  // Create a default vocabulary named "Tags".
  $description = 'Use tags to group articles on similar topics into categories.';
  $help = 'Enter a comma-separated list of words to describe your content.';
  $vocabulary = Vocabulary::create([
    'name' => 'Tags',
    'description' => $description,
    'vid' => 'tags',
    'langcode' => \Drupal::languageManager()
      ->getDefaultLanguage()
      ->getId(),
    'help' => $help,
  ]);
  $vocabulary
    ->save();

  // Test tags vocabulary form is not affected.
  $this
    ->drupalGet('admin/structure/taxonomy/manage/tags');
  $this
    ->assertSession()
    ->buttonExists('Save');
  $this
    ->assertSession()
    ->linkExists('Delete');

  // Test tags vocabulary term form is not affected.
  $this
    ->drupalGet('admin/structure/taxonomy/manage/tags/add');
  $this
    ->assertSession()
    ->fieldExists('parent[]');

  // Test relations widget exists.
  $relations_widget = $this
    ->xpath("//details[@id='edit-relations']");
  $this
    ->assertTrue(isset($relations_widget[0]), 'Relations widget element found.');
}