Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Handler / SortTranslationTest.php
1 <?php
2
3 namespace Drupal\Tests\views\Kernel\Handler;
4
5 use Drupal\field\Entity\FieldConfig;
6 use Drupal\field\Entity\FieldStorageConfig;
7 use Drupal\language\Entity\ConfigurableLanguage;
8 use Drupal\node\Entity\Node;
9 use Drupal\node\Entity\NodeType;
10 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
11 use Drupal\views\Views;
12
13 /**
14  * Tests sorting on translatable and not translatable fields.
15  *
16  * @group views
17  */
18 class SortTranslationTest extends ViewsKernelTestBase {
19   /**
20    * {@inheritdoc}
21    */
22   public static $modules = [
23     'node',
24     'field',
25     'language',
26   ];
27
28   /**
29    * {@inheritdoc}
30    */
31   public static $testViews = [
32     'test_view_sort_translation',
33   ];
34
35   /**
36    * {@inheritdoc}
37    */
38   protected function setUp($import_test_views = TRUE) {
39     parent::setUp($import_test_views);
40     ConfigurableLanguage::createFromLangcode('de')->save();
41     $this->installSchema('node', 'node_access');
42     $this->installEntitySchema('node');
43     $this->installEntitySchema('user');
44
45     // $this->installConfig('node');
46     $this->container->get('kernel')->rebuildContainer();
47
48     $node_type = NodeType::create(['type' => 'article']);
49     $node_type->save();
50
51     FieldStorageConfig::create([
52       'field_name' => 'text',
53       'entity_type' => 'node',
54       'type' => 'string',
55     ])->save();
56
57     FieldConfig::create([
58       'field_name' => 'text',
59       'entity_type' => 'node',
60       'bundle' => 'article',
61       'label' => 'Translated text',
62       'translatable' => TRUE,
63     ])->save();
64
65     FieldStorageConfig::create([
66       'field_name' => 'weight',
67       'entity_type' => 'node',
68       'type' => 'integer',
69     ])->save();
70
71     FieldConfig::create([
72       'field_name' => 'weight',
73       'entity_type' => 'node',
74       'bundle' => 'article',
75       'translatable' => FALSE,
76     ])->save();
77
78     for ($i = 0; $i < 3; $i++) {
79       $node = Node::create([
80         'type' => 'article',
81         'title' => 'Title en ' . $i,
82         'weight' => ['value' => 3 - $i],
83         'text' => ['value' => 'moo en ' . $i],
84         'langcode' => 'en',
85       ]);
86       $node->save();
87
88       $translation = $node->addTranslation('de');
89       $translation->title->value = 'Title DE ' . $i;
90       $translation->text->value = 'moo DE ' . $i;
91       $translation->save();
92       $nodes[] = $node;
93     }
94   }
95
96   /**
97    * Test sorting on an untranslated field.
98    */
99   public function testSortbyUntranslatedIntegerField() {
100     $map = [
101       'nid' => 'nid',
102       'node_field_data_langcode' => 'langcode',
103     ];
104
105     $view = Views::getView('test_view_sort_translation');
106     $view->setDisplay('default');
107     $this->executeView($view);
108
109     // With ascending sort, the nodes should come out in reverse order.
110     $expected = [
111       [
112         'nid' => 3,
113         'langcode' => 'en',
114       ],
115       [
116         'nid' => 2,
117         'langcode' => 'en',
118       ],
119       [
120         'nid' => 1,
121         'langcode' => 'en',
122       ],
123     ];
124     $this->assertIdenticalResultset($view, $expected, $map);
125     $view->destroy();
126
127     $view = Views::getView('test_view_sort_translation');
128     $view->setDisplay('display_de');
129     $this->executeView($view);
130
131     $expected = [
132       [
133         'nid' => 3,
134         'langcode' => 'de',
135       ],
136       [
137         'nid' => 2,
138         'langcode' => 'de',
139       ],
140       [
141         'nid' => 1,
142         'langcode' => 'de',
143       ],
144     ];
145
146     // The weight field is not translated, we sort by it so the nodes
147     // should come out in the same order in both languages.
148     $this->assertIdenticalResultset($view, $expected, $map);
149     $view->destroy();
150   }
151
152 }