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.