CommentActionsTest.php

Same filename and directory in other branches
  1. 9 core/modules/comment/tests/src/Kernel/CommentActionsTest.php
  2. 10 core/modules/comment/tests/src/Kernel/CommentActionsTest.php
  3. 11.x core/modules/comment/tests/src/Kernel/CommentActionsTest.php

Namespace

Drupal\Tests\comment\Functional

File

core/modules/comment/tests/src/Functional/CommentActionsTest.php

View source
<?php

namespace Drupal\Tests\comment\Functional;

use Drupal\comment\Entity\Comment;
use Drupal\system\Entity\Action;

/**
 * Tests actions provided by the Comment module.
 *
 * @group comment
 */
class CommentActionsTest extends CommentTestBase {
    
    /**
     * Modules to install.
     *
     * @var array
     */
    public static $modules = [
        'dblog',
        'action',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Tests comment publish and unpublish actions.
     */
    public function testCommentPublishUnpublishActions() {
        $this->drupalLogin($this->webUser);
        $comment_text = $this->randomMachineName();
        $subject = $this->randomMachineName();
        $comment = $this->postComment($this->node, $comment_text, $subject);
        // Unpublish a comment.
        $action = Action::load('comment_unpublish_action');
        $action->execute([
            $comment,
        ]);
        $this->assertTrue($comment->isPublished() === FALSE, 'Comment was unpublished');
        $this->assertArraySubset([
            'module' => [
                'comment',
            ],
        ], $action->getDependencies());
        // Publish a comment.
        $action = Action::load('comment_publish_action');
        $action->execute([
            $comment,
        ]);
        $this->assertTrue($comment->isPublished() === TRUE, 'Comment was published');
    }
    
    /**
     * Tests the unpublish comment by keyword action.
     */
    public function testCommentUnpublishByKeyword() {
        $this->drupalLogin($this->adminUser);
        $keyword_1 = $this->randomMachineName();
        $keyword_2 = $this->randomMachineName();
        $action = Action::create([
            'id' => 'comment_unpublish_by_keyword_action',
            'label' => $this->randomMachineName(),
            'type' => 'comment',
            'configuration' => [
                'keywords' => [
                    $keyword_1,
                    $keyword_2,
                ],
            ],
            'plugin' => 'comment_unpublish_by_keyword_action',
        ]);
        $action->save();
        $comment = $this->postComment($this->node, $keyword_2, $this->randomMachineName());
        // Load the full comment so that status is available.
        $comment = Comment::load($comment->id());
        $this->assertTrue($comment->isPublished() === TRUE, 'The comment status was set to published.');
        $action->execute([
            $comment,
        ]);
        $this->assertTrue($comment->isPublished() === FALSE, 'The comment status was set to not published.');
    }

}

Classes

Title Deprecated Summary
CommentActionsTest Tests actions provided by the Comment module.

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