function CommentAdminViewTest::doTestFilters

Same name and namespace in other branches
  1. 9 core/modules/comment/tests/src/Kernel/Views/CommentAdminViewTest.php \Drupal\Tests\comment\Kernel\Views\CommentAdminViewTest::doTestFilters()
  2. 8.9.x core/modules/comment/tests/src/Kernel/Views/CommentAdminViewTest.php \Drupal\Tests\comment\Kernel\Views\CommentAdminViewTest::doTestFilters()
  3. 10 core/modules/comment/tests/src/Kernel/Views/CommentAdminViewTest.php \Drupal\Tests\comment\Kernel\Views\CommentAdminViewTest::doTestFilters()

Tests comment admin view display.

Parameters

string $display_id: The display ID.

1 call to CommentAdminViewTest::doTestFilters()
CommentAdminViewTest::testFilters in core/modules/comment/tests/src/Kernel/Views/CommentAdminViewTest.php
Tests comment admin view filters.

File

core/modules/comment/tests/src/Kernel/Views/CommentAdminViewTest.php, line 154

Class

CommentAdminViewTest
Tests comment admin view filters.

Namespace

Drupal\Tests\comment\Kernel\Views

Code

protected function doTestFilters($display_id) {
    $comment = $this->comments[0];
    $comment_anonymous = $this->comments[1];
    
    /** @var \Drupal\Core\Session\AccountSwitcherInterface $account_switcher */
    $account_switcher = \Drupal::service('account_switcher');
    
    /** @var \Drupal\Core\Render\RendererInterface $renderer */
    $renderer = \Drupal::service('renderer');
    $account_switcher->switchTo($this->adminUser);
    $executable = Views::getView('comment');
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    // Assert the exposed filters on the admin page.
    $this->assertField('subject');
    $this->assertField('author_name');
    $this->assertField('langcode');
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(2, $elements, 'There are two comments on the page.');
    $this->assertText($comment->label());
    $this->assertText($comment_anonymous->label());
    $executable->destroy();
    // Test the Subject filter.
    $executable->setExposedInput([
        'subject' => 'Anonymous',
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(1, $elements, 'Only anonymous comment is visible.');
    $this->assertNoText($comment->label());
    $this->assertText($comment_anonymous->label());
    $executable->destroy();
    $executable->setExposedInput([
        'subject' => 'My comment',
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(1, $elements, 'Only admin comment is visible.');
    $this->assertText($comment->label());
    $this->assertNoText($comment_anonymous->label());
    $executable->destroy();
    // Test the combine filter using author name.
    $executable->setExposedInput([
        'author_name' => 'barry',
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(1, $elements, 'Only anonymous comment is visible.');
    $this->assertNoText($comment->label());
    $this->assertText($comment_anonymous->label());
    $executable->destroy();
    // Test the combine filter using username.
    $executable->setExposedInput([
        'author_name' => $this->adminUser
            ->label(),
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(1, $elements, 'Only admin comment is visible.');
    $this->assertText($comment->label());
    $this->assertNoText($comment_anonymous->label());
    $executable->destroy();
    // Test the language filter.
    $executable->setExposedInput([
        'langcode' => '***LANGUAGE_site_default***',
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(2, $elements, 'Both comments are visible.');
    $this->assertText($comment->label());
    $this->assertText($comment_anonymous->label());
    $executable->destroy();
    // Tests comment translation filter.
    if (!$comment->hasTranslation('ur')) {
        // If we don't have the translation then create one.
        $comment_translation = $comment->addTranslation('ur', [
            'subject' => 'ur title',
        ]);
        $comment_translation->save();
    }
    else {
        // If we have the translation then unpublish it.
        $comment_translation = $comment->getTranslation('ur');
        $comment_translation->setUnpublished();
        $comment_translation->save();
    }
    if (!$comment_anonymous->hasTranslation('ur')) {
        // If we don't have the translation then create one.
        $comment_anonymous_translation = $comment_anonymous->addTranslation('ur', [
            'subject' => 'ur Anonymous title',
        ]);
        $comment_anonymous_translation->save();
    }
    else {
        // If we have the translation then unpublish it.
        $comment_anonymous_translation = $comment_anonymous->getTranslation('ur');
        $comment_anonymous_translation->setUnpublished();
        $comment_anonymous_translation->save();
    }
    $executable->setExposedInput([
        'langcode' => 'ur',
    ]);
    $build = $executable->preview($display_id);
    $this->setRawContent($renderer->renderRoot($build));
    $elements = $this->cssSelect('input[type="checkbox"]');
    $this->assertCount(2, $elements, 'Both comments are visible.');
    $this->assertNoText($comment->label());
    $this->assertNoText($comment_anonymous->label());
    $this->assertText($comment_translation->label());
    $this->assertText($comment_anonymous_translation->label());
    $executable->destroy();
}

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