NodeViewBuilderTest.php

Same filename and directory in other branches
  1. 9 core/modules/node/tests/src/Kernel/NodeViewBuilderTest.php
  2. 8.9.x core/modules/node/tests/src/Kernel/NodeViewBuilderTest.php
  3. 10 core/modules/node/tests/src/Kernel/NodeViewBuilderTest.php

Namespace

Drupal\Tests\node\Kernel

File

core/modules/node/tests/src/Kernel/NodeViewBuilderTest.php

View source
<?php

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

use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
use Drupal\user\Entity\User;

/**
 * Tests the node view builder.
 *
 * @group node
 *
 * @coversDefaultClass \Drupal\node\NodeViewBuilder
 */
class NodeViewBuilderTest extends EntityKernelTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'node',
    ];
    
    /**
     * The node storage.
     *
     * @var \Drupal\node\NodeStorageInterface
     */
    protected $storage;
    
    /**
     * The node view builder.
     *
     * @var \Drupal\Core\Entity\EntityViewBuilderInterface
     */
    protected $viewBuilder;
    
    /**
     * The renderer.
     *
     * @var \Drupal\Core\Render\RendererInterface
     */
    protected $renderer;
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $this->storage = $this->entityTypeManager
            ->getStorage('node');
        $this->viewBuilder = $this->entityTypeManager
            ->getViewBuilder('node');
        $this->renderer = $this->container
            ->get('renderer');
        $type = NodeType::create([
            'type' => 'article',
            'name' => 'Article',
        ]);
        $type->save();
        $this->installSchema('node', 'node_access');
        $this->installConfig([
            'system',
            'node',
        ]);
    }
    
    /**
     * Tests that node links are displayed correctly in pending revisions.
     *
     * @covers ::buildComponents
     * @covers ::renderLinks
     * @covers ::buildLinks
     */
    public function testPendingRevisionLinks() : void {
        $account = User::create([
            'name' => $this->randomString(),
        ]);
        $account->save();
        $title = $this->randomMachineName();
        $node = Node::create([
            'type' => 'article',
            'title' => $title,
            'uid' => $account->id(),
        ]);
        $node->save();
        
        /** @var \Drupal\node\NodeInterface $pending_revision */
        $pending_revision = $this->storage
            ->createRevision($node, FALSE);
        $draft_title = $title . ' draft';
        $pending_revision->setTitle($draft_title);
        $pending_revision->save();
        $build = $this->viewBuilder
            ->view($node, 'teaser');
        $output = (string) $this->renderer
            ->renderInIsolation($build);
        $this->assertStringContainsString("title=\"{$title}\"", $output);
        $build = $this->viewBuilder
            ->view($pending_revision, 'teaser');
        $output = (string) $this->renderer
            ->renderInIsolation($build);
        $this->assertStringContainsString("title=\"{$draft_title}\"", $output);
    }

}

Classes

Title Deprecated Summary
NodeViewBuilderTest Tests the node view builder.

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