annotate core/modules/views/tests/src/Kernel/TokenReplaceTest.php @ 19:fa3358dc1485 tip

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