function ForumTest::verifyForums

Same name and namespace in other branches
  1. 9 core/modules/forum/tests/src/Functional/ForumTest.php \Drupal\Tests\forum\Functional\ForumTest::verifyForums()
  2. 10 core/modules/forum/tests/src/Functional/ForumTest.php \Drupal\Tests\forum\Functional\ForumTest::verifyForums()
  3. 11.x core/modules/forum/tests/src/Functional/ForumTest.php \Drupal\Tests\forum\Functional\ForumTest::verifyForums()

Verifies that the logged in user has access to a forum node.

Parameters

\Drupal\Core\Entity\EntityInterface $node: The node being checked.

bool $admin: Boolean to indicate whether the user can 'access administration pages'.

int $response: The expected HTTP response code.

2 calls to ForumTest::verifyForums()
ForumTest::doBasicTests in core/modules/forum/tests/src/Functional/ForumTest.php
Runs basic tests on the indicated user.
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 620

Class

ForumTest
Tests for <a href="/api/drupal/core%21modules%21forum%21forum.module/8.9.x" title="Provides discussion forums." class="local">forum.module</a>.

Namespace

Drupal\Tests\forum\Functional

Code

private function verifyForums(EntityInterface $node, $admin, $response = 200) {
    $response2 = $admin ? 200 : 403;
    // View forum help node.
    $this->drupalGet('admin/help/forum');
    $this->assertSession()
        ->statusCodeEquals($response2);
    if ($response2 == 200) {
        $this->assertTitle('Forum | Drupal');
        $this->assertText(t('Forum'), 'Forum help node was displayed');
    }
    // View forum container page.
    $this->verifyForumView($this->forumContainer);
    // View forum page.
    $this->verifyForumView($this->forum, $this->forumContainer);
    // View root forum page.
    $this->verifyForumView($this->rootForum);
    // View forum node.
    $this->drupalGet('node/' . $node->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertTitle($node->label() . ' | Drupal');
    $breadcrumb_build = [
        Link::createFromRoute(t('Home'), '<front>'),
        Link::createFromRoute(t('Forums'), 'forum.index'),
        Link::createFromRoute($this->forumContainer['name'], 'forum.page', [
            'taxonomy_term' => $this->forumContainer['tid'],
        ]),
        Link::createFromRoute($this->forum['name'], 'forum.page', [
            'taxonomy_term' => $this->forum['tid'],
        ]),
    ];
    $breadcrumb = [
        '#theme' => 'breadcrumb',
        '#links' => $breadcrumb_build,
    ];
    $this->assertRaw(\Drupal::service('renderer')->renderRoot($breadcrumb), 'Breadcrumbs were displayed');
    // View forum edit node.
    $this->drupalGet('node/' . $node->id() . '/edit');
    $this->assertSession()
        ->statusCodeEquals($response);
    if ($response == 200) {
        $this->assertTitle('Edit Forum topic ' . $node->label() . ' | Drupal');
    }
    if ($response == 200) {
        // Edit forum node (including moving it to another forum).
        $edit = [];
        $edit['title[0][value]'] = 'node/' . $node->id();
        $edit['body[0][value]'] = $this->randomMachineName(256);
        // Assume the topic is initially associated with $forum.
        $edit['taxonomy_forums'] = $this->rootForum['tid'];
        $edit['shadow'] = TRUE;
        $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
        $this->assertText(t('Forum topic @title has been updated.', [
            '@title' => $edit['title[0][value]'],
        ]), 'Forum node was edited');
        // Verify topic was moved to a different forum.
        $forum_tid = $this->container
            ->get('database')
            ->select('forum', 'f')
            ->fields('f', [
            'tid',
        ])
            ->condition('nid', $node->id())
            ->condition('vid', $node->getRevisionId())
            ->execute()
            ->fetchField();
        $this->assertTrue($forum_tid == $this->rootForum['tid'], 'The forum topic is linked to a different forum');
        // Delete forum node.
        $this->drupalPostForm('node/' . $node->id() . '/delete', [], t('Delete'));
        $this->assertSession()
            ->statusCodeEquals($response);
        $this->assertRaw(t('Forum topic %title has been deleted.', [
            '%title' => $edit['title[0][value]'],
        ]), 'Forum node was deleted');
    }
}

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