Further Drupal 8.6.4 changes. Some core files were not committed before a commit...
[yaffs-website] / web / core / modules / node / tests / src / Kernel / Views / RevisionRelationshipsTest.php
1 <?php
2
3 namespace Drupal\Tests\node\Kernel\Views;
4
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\node\Entity\Node;
7 use Drupal\node\Entity\NodeType;
8 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
9 use Drupal\views\Views;
10 use Drupal\views\Tests\ViewTestData;
11
12 /**
13  * Tests the integration of node_revision table of node module.
14  *
15  * @group node
16  */
17 class RevisionRelationshipsTest extends ViewsKernelTestBase {
18
19   /**
20    * Modules to enable.
21    *
22    * @var array
23    */
24   public static $modules = [
25     'node',
26     'node_test_views',
27     'language',
28     'content_translation',
29   ];
30
31   /**
32    * {@inheritdoc}
33    */
34   protected function setUp($import_test_views = TRUE) {
35     parent::setUp($import_test_views);
36
37     $this->installSchema('node', 'node_access');
38
39     $this->installEntitySchema('user');
40     $this->installEntitySchema('node');
41
42     ConfigurableLanguage::createFromLangcode('fr')->save();
43
44     ViewTestData::createTestViews(get_class($this), ['node_test_views']);
45   }
46
47   /**
48    * Views used by this test.
49    *
50    * @var array
51    */
52   public static $testViews = ['test_node_revision_nid', 'test_node_revision_vid'];
53
54   /**
55    * Create a node with revision and rest result count for both views.
56    */
57   public function testNodeRevisionRelationship() {
58     $type = NodeType::create(['type' => 'page', 'name' => 'page']);
59     $type->save();
60     $node = Node::create(['type' => 'page', 'title' => 'test', 'uid' => 1]);
61     $node->save();
62
63     // Add a translation.
64     $translation = $node->addTranslation('fr', $node->toArray());
65     $translation->save();
66     // Create revision of the node.
67     $node->setNewRevision(TRUE);
68     $node->save();
69
70     $column_map = [
71       'vid' => 'vid',
72       'node_field_data_node_field_revision_nid' => 'node_node_revision_nid',
73       'nid_1' => 'nid_1',
74       'node_field_revision_langcode' => 'node_field_revision_langcode',
75     ];
76
77     // Here should be two rows for each translation.
78     $view_nid = Views::getView('test_node_revision_nid');
79     $this->executeView($view_nid, [$node->id()]);
80     $resultset_nid = [
81       [
82         'vid' => '1',
83         'node_node_revision_nid' => '1',
84         'nid_1' => '1',
85         'node_field_revision_langcode' => 'fr',
86       ],
87       [
88         'vid' => '1',
89         'node_node_revision_nid' => '1',
90         'nid_1' => '1',
91         'node_field_revision_langcode' => 'en',
92       ],
93       [
94         'vid' => '2',
95         'node_revision_nid' => '1',
96         'node_node_revision_nid' => '1',
97         'nid_1' => '1',
98         'node_field_revision_langcode' => 'fr',
99       ],
100       [
101         'vid' => '2',
102         'node_revision_nid' => '1',
103         'node_node_revision_nid' => '1',
104         'nid_1' => '1',
105         'node_field_revision_langcode' => 'en',
106       ],
107     ];
108     $this->assertIdenticalResultset($view_nid, $resultset_nid, $column_map);
109
110     // There should be one row with active revision 2 for each translation.
111     $view_vid = Views::getView('test_node_revision_vid');
112     $this->executeView($view_vid, [$node->id()]);
113     $resultset_vid = [
114       [
115         'vid' => '2',
116         'node_node_revision_nid' => '1',
117         'nid_1' => '1',
118         'node_field_revision_langcode' => 'en',
119       ],
120       [
121         'vid' => '2',
122         'node_node_revision_nid' => '1',
123         'nid_1' => '1',
124         'node_field_revision_langcode' => 'fr',
125       ],
126     ];
127     $this->assertIdenticalResultset($view_vid, $resultset_vid, $column_map);
128   }
129
130 }