Loading core/modules/views/src/Plugin/views/pager/Some.php +7 −0 Original line number Diff line number Diff line Loading @@ -69,4 +69,11 @@ public function query() { $this->view->query->setOffset($this->options['offset']); } /** * {@inheritdoc} */ public function postExecute(&$result): void { $this->total_items = count($result); } } core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tokens.yml +32 −0 Original line number Diff line number Diff line Loading @@ -107,3 +107,35 @@ display: value: "Total rows: [view:total-rows] - Page count: [view:page-count]" format: basic_html plugin_id: text page_4: display_plugin: page id: page_4 display_title: Specific items page position: 5 display_options: defaults: title: false pager: false header: false pager: type: some options: offset: 0 items_per_page: 3 title: 'Test token page with "Display a specified number of items" pager plugin.' path: test_tokens_display_specific_items display_extenders: { } header: area: id: area table: views field: area relationship: none group_type: group admin_label: '' empty: false tokenize: false content: value: "Total rows: [view:total-rows]" format: basic_html plugin_id: text core/modules/views/tests/src/Kernel/TokenReplaceTest.php +35 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Render\BubbleableMetadata; use Drupal\views\Tests\ViewTestData; use Drupal\views\Views; /** Loading Loading @@ -106,6 +107,40 @@ public function testTokenReplacementWithMiniPager() { } } /** * Tests token replacement of [view:total-rows] when pager is disabled. * * It calls "Some" views pager plugin. */ public function testTokenReplacementWithSpecificNumberOfItems(): void { $token_handler = \Drupal::token(); $view = Views::getView('test_tokens'); $view->setDisplay('page_4'); $this->executeView($view); $total_rows_in_table = ViewTestData::dataSet(); $this->assertTrue($view->get_total_rows, 'The query was set to calculate the total number of rows.'); $this->assertGreaterThan(3, count($total_rows_in_table)); $expected = [ '[view:label]' => 'Test tokens', '[view:id]' => 'test_tokens', '[view:url]' => $view->getUrl(NULL, 'page_4') ->setAbsolute(TRUE) ->toString(), '[view:total-rows]' => '3', ]; $base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage); foreach ($expected as $token => $expected_output) { $bubbleable_metadata = new BubbleableMetadata(); $output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata); $this->assertSame($expected_output, $output, sprintf('Token %s replaced correctly.', $token)); $this->assertEquals($base_bubbleable_metadata, $bubbleable_metadata); } } /** * Tests core token replacements generated from a view without results. */ Loading Loading
core/modules/views/src/Plugin/views/pager/Some.php +7 −0 Original line number Diff line number Diff line Loading @@ -69,4 +69,11 @@ public function query() { $this->view->query->setOffset($this->options['offset']); } /** * {@inheritdoc} */ public function postExecute(&$result): void { $this->total_items = count($result); } }
core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tokens.yml +32 −0 Original line number Diff line number Diff line Loading @@ -107,3 +107,35 @@ display: value: "Total rows: [view:total-rows] - Page count: [view:page-count]" format: basic_html plugin_id: text page_4: display_plugin: page id: page_4 display_title: Specific items page position: 5 display_options: defaults: title: false pager: false header: false pager: type: some options: offset: 0 items_per_page: 3 title: 'Test token page with "Display a specified number of items" pager plugin.' path: test_tokens_display_specific_items display_extenders: { } header: area: id: area table: views field: area relationship: none group_type: group admin_label: '' empty: false tokenize: false content: value: "Total rows: [view:total-rows]" format: basic_html plugin_id: text
core/modules/views/tests/src/Kernel/TokenReplaceTest.php +35 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Render\BubbleableMetadata; use Drupal\views\Tests\ViewTestData; use Drupal\views\Views; /** Loading Loading @@ -106,6 +107,40 @@ public function testTokenReplacementWithMiniPager() { } } /** * Tests token replacement of [view:total-rows] when pager is disabled. * * It calls "Some" views pager plugin. */ public function testTokenReplacementWithSpecificNumberOfItems(): void { $token_handler = \Drupal::token(); $view = Views::getView('test_tokens'); $view->setDisplay('page_4'); $this->executeView($view); $total_rows_in_table = ViewTestData::dataSet(); $this->assertTrue($view->get_total_rows, 'The query was set to calculate the total number of rows.'); $this->assertGreaterThan(3, count($total_rows_in_table)); $expected = [ '[view:label]' => 'Test tokens', '[view:id]' => 'test_tokens', '[view:url]' => $view->getUrl(NULL, 'page_4') ->setAbsolute(TRUE) ->toString(), '[view:total-rows]' => '3', ]; $base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage); foreach ($expected as $token => $expected_output) { $bubbleable_metadata = new BubbleableMetadata(); $output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata); $this->assertSame($expected_output, $output, sprintf('Token %s replaced correctly.', $token)); $this->assertEquals($base_bubbleable_metadata, $bubbleable_metadata); } } /** * Tests core token replacements generated from a view without results. */ Loading