Mercurial > hg > isophonics-drupal-site
comparison core/modules/views/tests/src/Kernel/TokenReplaceTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\views\Kernel; | |
4 | |
5 use Drupal\Core\Render\BubbleableMetadata; | |
6 use Drupal\views\Views; | |
7 | |
8 /** | |
9 * Tests core view token replacement. | |
10 * | |
11 * @group views | |
12 */ | |
13 class TokenReplaceTest extends ViewsKernelTestBase { | |
14 | |
15 public static $modules = ['system']; | |
16 | |
17 /** | |
18 * Views used by this test. | |
19 * | |
20 * @var array | |
21 */ | |
22 public static $testViews = ['test_tokens', 'test_invalid_tokens']; | |
23 | |
24 protected function setUp($import_test_views = TRUE) { | |
25 parent::setUp(); | |
26 $this->container->get('router.builder')->rebuild(); | |
27 } | |
28 | |
29 /** | |
30 * Tests core token replacements generated from a view. | |
31 */ | |
32 public function testTokenReplacement() { | |
33 $token_handler = \Drupal::token(); | |
34 $view = Views::getView('test_tokens'); | |
35 $view->setDisplay('page_1'); | |
36 // Force the view to span more than one page to better test page_count. | |
37 $view->display_handler->getPlugin('pager')->setItemsPerPage(4); | |
38 $this->executeView($view); | |
39 | |
40 $expected = [ | |
41 '[view:label]' => 'Test tokens', | |
42 '[view:description]' => 'Test view to token replacement tests.', | |
43 '[view:id]' => 'test_tokens', | |
44 '[view:title]' => 'Test token page', | |
45 '[view:url]' => $view->getUrl(NULL, 'page_1')->setAbsolute(TRUE)->toString(), | |
46 '[view:total-rows]' => '5', | |
47 '[view:base-table]' => 'views_test_data', | |
48 '[view:base-field]' => 'id', | |
49 '[view:items-per-page]' => '4', | |
50 '[view:current-page]' => '1', | |
51 '[view:page-count]' => '2', | |
52 ]; | |
53 | |
54 $base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage); | |
55 $metadata_tests = []; | |
56 $metadata_tests['[view:label]'] = $base_bubbleable_metadata; | |
57 $metadata_tests['[view:description]'] = $base_bubbleable_metadata; | |
58 $metadata_tests['[view:id]'] = $base_bubbleable_metadata; | |
59 $metadata_tests['[view:title]'] = $base_bubbleable_metadata; | |
60 $metadata_tests['[view:url]'] = $base_bubbleable_metadata; | |
61 $metadata_tests['[view:total-rows]'] = $base_bubbleable_metadata; | |
62 $metadata_tests['[view:base-table]'] = $base_bubbleable_metadata; | |
63 $metadata_tests['[view:base-field]'] = $base_bubbleable_metadata; | |
64 $metadata_tests['[view:items-per-page]'] = $base_bubbleable_metadata; | |
65 $metadata_tests['[view:current-page]'] = $base_bubbleable_metadata; | |
66 $metadata_tests['[view:page-count]'] = $base_bubbleable_metadata; | |
67 | |
68 foreach ($expected as $token => $expected_output) { | |
69 $bubbleable_metadata = new BubbleableMetadata(); | |
70 $output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata); | |
71 $this->assertIdentical($output, $expected_output, format_string('Token %token replaced correctly.', ['%token' => $token])); | |
72 $this->assertEqual($bubbleable_metadata, $metadata_tests[$token]); | |
73 } | |
74 } | |
75 | |
76 /** | |
77 * Tests core token replacements generated from a view. | |
78 */ | |
79 public function testTokenReplacementWithMiniPager() { | |
80 $token_handler = \Drupal::token(); | |
81 $view = Views::getView('test_tokens'); | |
82 $view->setDisplay('page_3'); | |
83 $this->executeView($view); | |
84 | |
85 $this->assertSame(TRUE, $view->get_total_rows, 'The query was set to calculate the total number of rows.'); | |
86 | |
87 $expected = [ | |
88 '[view:label]' => 'Test tokens', | |
89 '[view:description]' => 'Test view to token replacement tests.', | |
90 '[view:id]' => 'test_tokens', | |
91 '[view:title]' => 'Test token page with minipager', | |
92 '[view:url]' => $view->getUrl(NULL, 'page_3') | |
93 ->setAbsolute(TRUE) | |
94 ->toString(), | |
95 '[view:total-rows]' => '5', | |
96 '[view:base-table]' => 'views_test_data', | |
97 '[view:base-field]' => 'id', | |
98 '[view:items-per-page]' => '2', | |
99 '[view:current-page]' => '1', | |
100 '[view:page-count]' => '3', | |
101 ]; | |
102 | |
103 $base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage); | |
104 | |
105 foreach ($expected as $token => $expected_output) { | |
106 $bubbleable_metadata = new BubbleableMetadata(); | |
107 $output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata); | |
108 $this->assertSame($expected_output, $output, sprintf('Token %s replaced correctly.', $token)); | |
109 $this->assertEquals($base_bubbleable_metadata, $bubbleable_metadata); | |
110 } | |
111 } | |
112 | |
113 /** | |
114 * Tests core token replacements generated from a view without results. | |
115 */ | |
116 public function testTokenReplacementNoResults() { | |
117 $token_handler = \Drupal::token(); | |
118 $view = Views::getView('test_tokens'); | |
119 $view->setDisplay('page_2'); | |
120 $this->executeView($view); | |
121 | |
122 $expected = [ | |
123 '[view:page-count]' => '1', | |
124 ]; | |
125 | |
126 foreach ($expected as $token => $expected_output) { | |
127 $output = $token_handler->replace($token, ['view' => $view]); | |
128 $this->assertIdentical($output, $expected_output, format_string('Token %token replaced correctly.', ['%token' => $token])); | |
129 } | |
130 } | |
131 | |
132 /** | |
133 * Tests path token replacements generated from a view without a path. | |
134 */ | |
135 public function testTokenReplacementNoPath() { | |
136 $token_handler = \Drupal::token(); | |
137 $view = Views::getView('test_invalid_tokens'); | |
138 $view->setDisplay('block_1'); | |
139 $this->executeView($view); | |
140 | |
141 $expected = [ | |
142 '[view:url]' => '', | |
143 ]; | |
144 | |
145 foreach ($expected as $token => $expected_output) { | |
146 $output = $token_handler->replace($token, ['view' => $view]); | |
147 $this->assertIdentical($output, $expected_output, format_string('Token %token replaced correctly.', ['%token' => $token])); | |
148 } | |
149 } | |
150 | |
151 } |