CommentEntityTest.php

Same filename and directory in other branches
  1. 9 core/modules/comment/tests/src/Functional/CommentEntityTest.php
  2. 8.9.x core/modules/comment/tests/src/Functional/CommentEntityTest.php
  3. 10 core/modules/comment/tests/src/Functional/CommentEntityTest.php

Namespace

Drupal\Tests\comment\Functional

File

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

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\comment\Functional;

use Drupal\comment\Entity\CommentType;
use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
use Drupal\Core\Language\LanguageInterface;
use Drupal\comment\CommentInterface;
use Drupal\comment\Entity\Comment;
use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait;

/**
 * Tests comments with other entities.
 *
 * @group comment
 */
class CommentEntityTest extends CommentTestBase {
    use TaxonomyTestTrait;
    
    /**
     * Modules to install.
     *
     * @var array
     */
    protected static $modules = [
        'block',
        'comment',
        'node',
        'history',
        'field_ui',
        'datetime',
        'taxonomy',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    protected $vocab;
    protected $commentType;
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $this->vocab = $this->createVocabulary();
        $this->commentType = CommentType::create([
            'id' => 'taxonomy_comment',
            'label' => 'Taxonomy comment',
            'description' => '',
            'target_entity_type_id' => 'taxonomy_term',
        ]);
        $this->commentType
            ->save();
        $this->addDefaultCommentField('taxonomy_term', $this->vocab
            ->id(), 'field_comment', CommentItemInterface::OPEN, $this->commentType
            ->id());
    }
    
    /**
     * Tests CSS classes on comments.
     */
    public function testEntityChanges() : void {
        $this->drupalLogin($this->webUser);
        // Create a new node.
        $term = $this->createTerm($this->vocab, [
            'uid' => $this->webUser
                ->id(),
        ]);
        // Add a comment.
        
        /** @var \Drupal\comment\CommentInterface $comment */
        $comment = Comment::create([
            'entity_id' => $term->id(),
            'entity_type' => 'taxonomy_term',
            'field_name' => 'field_comment',
            'uid' => $this->webUser
                ->id(),
            'status' => CommentInterface::PUBLISHED,
            'subject' => $this->randomMachineName(),
            'language' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
            'comment_body' => [
                LanguageInterface::LANGCODE_NOT_SPECIFIED => [
                    $this->randomMachineName(),
                ],
            ],
        ]);
        $comment->save();
        // Request the node with the comment.
        $this->drupalGet('taxonomy/term/' . $term->id());
        $settings = $this->getDrupalSettings();
        $this->assertFalse(isset($settings['ajaxPageState']['libraries']) && in_array('comment/drupal.comment-new-indicator', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.comment-new-indicator library is present.');
        $this->assertFalse(isset($settings['history']['lastReadTimestamps']) && in_array($term->id(), array_keys($settings['history']['lastReadTimestamps'])), 'history.lastReadTimestamps is present.');
    }

}

Classes

Title Deprecated Summary
CommentEntityTest Tests comments with other entities.

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