ForumValidationTest.php

Same filename in other branches
  1. 9 core/modules/forum/tests/src/Kernel/ForumValidationTest.php
  2. 8.9.x core/modules/forum/tests/src/Kernel/ForumValidationTest.php
  3. 11.x core/modules/forum/tests/src/Kernel/ForumValidationTest.php

Namespace

Drupal\Tests\forum\Kernel

File

core/modules/forum/tests/src/Kernel/ForumValidationTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\forum\Kernel;

use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
use Drupal\node\Entity\Node;
use Drupal\taxonomy\Entity\Term;

/**
 * Tests forum validation constraints.
 *
 * @group forum
 * @group legacy
 */
class ForumValidationTest extends EntityKernelTestBase {
    
    /**
     * Modules to install.
     *
     * @var array
     */
    protected static $modules = [
        'node',
        'options',
        'comment',
        'taxonomy',
        'forum',
    ];
    
    /**
     * Tests the forum validation constraints.
     */
    public function testValidation() : void {
        $this->installConfig('forum');
        // Add a forum.
        $forum = Term::create([
            'name' => 'forum 1',
            'vid' => 'forums',
            'forum_container' => 0,
        ]);
        // Add a container.
        $container = Term::create([
            'name' => 'container 1',
            'vid' => 'forums',
            'forum_container' => 1,
        ]);
        // Add a forum post.
        $forum_post = Node::create([
            'type' => 'forum',
            'title' => 'Do these pants make my butt look big?',
        ]);
        $violations = $forum_post->validate();
        $this->assertCount(1, $violations);
        $this->assertEquals('This value should not be null.', $violations[0]->getMessage());
        // Add the forum term.
        $forum_post->set('taxonomy_forums', $forum);
        $violations = $forum_post->validate();
        $this->assertCount(0, $violations);
        // Try to use a container.
        $forum_post->set('taxonomy_forums', $container);
        $violations = $forum_post->validate();
        $this->assertCount(1, $violations);
        $this->assertEquals(sprintf('The item %s is a forum container, not a forum. Select one of the forums below instead.', $container->label()), $violations[0]->getMessage());
    }

}

Classes

Title Deprecated Summary
ForumValidationTest Tests forum validation constraints.

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