X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fviews%2Ftests%2Fsrc%2FFunctional%2FPlugin%2FMiniPagerTest.php;fp=web%2Fcore%2Fmodules%2Fviews%2Ftests%2Fsrc%2FFunctional%2FPlugin%2FMiniPagerTest.php;h=492d22f987979695678bd7e5e07db9bb2ab06a1e;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php b/web/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php new file mode 100644 index 000000000..492d22f98 --- /dev/null +++ b/web/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php @@ -0,0 +1,135 @@ +drupalCreateContentType(['type' => 'page']); + // Create a bunch of test nodes. + for ($i = 0; $i < 20; $i++) { + $this->nodes[] = $this->drupalCreateNode(); + } + } + + /** + * Tests the rendering of mini pagers. + */ + public function testMiniPagerRender() { + $this->drupalGet('test_mini_pager'); + $this->assertText('›› test', 'The next link appears on the first page.'); + $this->assertText('Page 1', 'The current page info shows the first page.'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the first page.'); + $this->assertText($this->nodes[0]->label()); + $this->assertText($this->nodes[1]->label()); + $this->assertText($this->nodes[2]->label()); + + $this->drupalGet('test_mini_pager', ['query' => ['page' => 1]]); + $this->assertText('‹‹ test', 'The previous link appears.'); + $this->assertText('Page 2', 'The current page info shows the second page.'); + $this->assertText('›› test', 'The next link appears.'); + $this->assertText($this->nodes[3]->label()); + $this->assertText($this->nodes[4]->label()); + $this->assertText($this->nodes[5]->label()); + + $this->drupalGet('test_mini_pager', ['query' => ['page' => 6]]); + $this->assertNoText('›› test', 'The next link appears on the last page.'); + $this->assertText('Page 7', 'The current page info shows the last page.'); + $this->assertText('‹‹ test', 'The previous link does not appear on the last page.'); + $this->assertText($this->nodes[18]->label()); + $this->assertText($this->nodes[19]->label()); + + // Test @total value in result summary + $view = Views::getView('test_mini_pager'); + $view->setDisplay('page_4'); + $this->executeView($view); + $this->assertIdentical($view->get_total_rows, TRUE, 'The query was set to calculate the total number of rows.'); + $this->assertEqual(count($this->nodes), $view->total_rows, 'The total row count is equal to the number of nodes.'); + + $this->drupalGet('test_mini_pager_total', ['query' => ['page' => 1]]); + $this->assertText('of ' . count($this->nodes), 'The first page shows the total row count.'); + $this->drupalGet('test_mini_pager_total', ['query' => ['page' => 6]]); + $this->assertText('of ' . count($this->nodes), 'The last page shows the total row count.'); + + // Test a mini pager with just one item per page. + $this->drupalGet('test_mini_pager_one'); + $this->assertText('››'); + $this->assertText('Page 1'); + $this->assertText($this->nodes[0]->label()); + + $this->drupalGet('test_mini_pager_one', ['query' => ['page' => 1]]); + $this->assertText('‹‹'); + $this->assertText('Page 2'); + $this->assertText('››'); + $this->assertText($this->nodes[1]->label()); + + $this->drupalGet('test_mini_pager_one', ['query' => ['page' => 19]]); + $this->assertNoText('››'); + $this->assertText('Page 20'); + $this->assertText('‹‹'); + $this->assertText($this->nodes[19]->label()); + + $this->drupalGet('test_mini_pager_all'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.'); + $this->assertNoText('Page 1', 'The current page info shows the only page.'); + $this->assertNoText('test ››', 'The next link does not appear on the page.'); + $result = $this->xpath('//div[contains(@class, "views-row")]'); + $this->assertEqual(count($result), count($this->nodes), 'All rows appear on the page.'); + + // Remove all items beside 1, so there should be no links shown. + for ($i = 0; $i < 19; $i++) { + $this->nodes[$i]->delete(); + } + + $this->drupalGet('test_mini_pager'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.'); + $this->assertNoText('Page 1', 'The current page info shows the only page.'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.'); + $this->assertText($this->nodes[19]->label()); + + $view = Views::getView('test_mini_pager'); + $this->executeView($view); + $this->assertIdentical($view->get_total_rows, NULL, 'The query was not forced to calculate the total number of results.'); + $this->assertIdentical($view->total_rows, 1, 'The pager calculated the total number of rows.'); + + // Remove the last node as well and ensure that no "Page 1" is shown. + $this->nodes[19]->delete(); + $this->drupalGet('test_mini_pager'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.'); + $this->assertNoText('Page 1', 'The current page info shows the only page.'); + $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.'); + } + +}