d92bd8fd7202e8e6700ea21ee8389bf22c7ac282
[yaffs-website] / web / core / modules / node / tests / src / Kernel / NodeViewBuilderTest.php
1 <?php
2
3 namespace Drupal\Tests\node\Kernel;
4
5 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
6 use Drupal\node\Entity\Node;
7 use Drupal\node\Entity\NodeType;
8 use Drupal\user\Entity\User;
9
10 /**
11  * Tests the node view builder.
12  *
13  * @group node
14  *
15  * @coversDefaultClass \Drupal\node\NodeViewBuilder
16  */
17 class NodeViewBuilderTest extends EntityKernelTestBase {
18
19   /**
20    * {@inheritdoc}
21    */
22   public static $modules = ['node'];
23
24   /**
25    * The node storage.
26    *
27    * @var \Drupal\node\NodeStorageInterface
28    */
29   protected $storage;
30
31   /**
32    * The node view builder.
33    *
34    * @var \Drupal\Core\Entity\EntityViewBuilderInterface
35    */
36   protected $viewBuilder;
37
38   /**
39    * The renderer.
40    *
41    * @var \Drupal\Core\Render\RendererInterface
42    */
43   protected $renderer;
44
45   /**
46    * {@inheritdoc}
47    */
48   protected function setUp() {
49     parent::setUp();
50
51     $this->storage = $this->entityManager->getStorage('node');
52     $this->viewBuilder = $this->entityManager->getViewBuilder('node');
53     $this->renderer = $this->container->get('renderer');
54
55     $type = NodeType::create([
56       'type' => 'article',
57       'name' => 'Article',
58     ]);
59     $type->save();
60
61     $this->installSchema('node', 'node_access');
62     $this->installConfig(['system', 'node']);
63   }
64
65   /**
66    * Tests that node links are displayed correctly in pending revisions.
67    *
68    * @covers ::buildComponents
69    * @covers ::renderLinks
70    * @covers ::buildLinks
71    */
72   public function testPendingRevisionLinks() {
73     $account = User::create([
74       'name' => $this->randomString(),
75     ]);
76     $account->save();
77
78     $title = $this->randomMachineName();
79     $node = Node::create([
80       'type' => 'article',
81       'title' => $title,
82       'uid' => $account->id(),
83     ]);
84     $node->save();
85
86     /** @var \Drupal\node\NodeInterface $pending_revision */
87     $pending_revision = $this->storage->createRevision($node, FALSE);
88     $draft_title = $title . ' draft';
89     $pending_revision->setTitle($draft_title);
90     $pending_revision->save();
91
92     $build = $this->viewBuilder->view($node, 'teaser');
93     $output = (string) $this->renderer->renderPlain($build);
94     $this->assertContains("title=\"$title\"", $output);
95
96     $build = $this->viewBuilder->view($pending_revision, 'teaser');
97     $output = (string) $this->renderer->renderPlain($build);
98     $this->assertContains("title=\"$draft_title\"", $output);
99   }
100
101 }