SlidingTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. use Test\Tool\BaseTestCase;
  3. use Knp\Component\Pager\Paginator;
  4. use Knp\Component\Pager\Pagination\SlidingPagination;
  5. use Knp\Component\Pager\Pagination\PaginationInterface;
  6. use Knp\Component\Pager\Event\Subscriber\Paginate\PaginationSubscriber;
  7. class SlidingTest extends BaseTestCase
  8. {
  9. /**
  10. * @test
  11. */
  12. function shouldBeAbleToProducePagination()
  13. {
  14. $p = new Paginator;
  15. $items = range(1, 23);
  16. $view = $p->paginate($items, 1, 10);
  17. $view->renderer = function($data) {
  18. return 'custom';
  19. };
  20. $this->assertEquals('custom', (string)$view);
  21. $pagination = $view->getPaginationData();
  22. $this->assertEquals(3, $pagination['last']);
  23. $this->assertEquals(1, $pagination['first']);
  24. $this->assertEquals(1, $pagination['current']);
  25. $this->assertEquals(10, $pagination['numItemsPerPage']);
  26. $this->assertEquals(3, $pagination['pageCount']);
  27. $this->assertEquals(23, $pagination['totalCount']);
  28. $this->assertEquals(2, $pagination['next']);
  29. $this->assertEquals(array(1, 2, 3), $pagination['pagesInRange']);
  30. $this->assertEquals(1, $pagination['firstPageInRange']);
  31. $this->assertEquals(3, $pagination['lastPageInRange']);
  32. $this->assertEquals(10, $pagination['currentItemCount']);
  33. $this->assertEquals(1, $pagination['firstItemNumber']);
  34. $this->assertEquals(10, $pagination['lastItemNumber']);
  35. }
  36. /**
  37. * @test
  38. */
  39. function shouldBeAbleToProduceWiderPagination()
  40. {
  41. $p = new Paginator;
  42. $items = range(1, 43);
  43. $view = $p->paginate($items, 4, 5);
  44. $pagination = $view->getPaginationData();
  45. $this->assertEquals(9, $pagination['last']);
  46. $this->assertEquals(1, $pagination['first']);
  47. $this->assertEquals(4, $pagination['current']);
  48. $this->assertEquals(5, $pagination['numItemsPerPage']);
  49. $this->assertEquals(9, $pagination['pageCount']);
  50. $this->assertEquals(43, $pagination['totalCount']);
  51. $this->assertEquals(5, $pagination['next']);
  52. $this->assertEquals(3, $pagination['previous']);
  53. $this->assertEquals(array(2, 3, 4, 5, 6), $pagination['pagesInRange']);
  54. $this->assertEquals(2, $pagination['firstPageInRange']);
  55. $this->assertEquals(6, $pagination['lastPageInRange']);
  56. $this->assertEquals(5, $pagination['currentItemCount']);
  57. $this->assertEquals(16, $pagination['firstItemNumber']);
  58. $this->assertEquals(20, $pagination['lastItemNumber']);
  59. }
  60. /**
  61. * @test
  62. */
  63. function shouldHandleOddAndEvenRange()
  64. {
  65. $p = new Paginator;
  66. $items = range(1, 43);
  67. $view = $p->paginate($items, 4, 5);
  68. $view->setPageRange(4);
  69. $pagination = $view->getPaginationData();
  70. $this->assertEquals(3, $pagination['previous']);
  71. $this->assertEquals(array(3, 4, 5, 6), $pagination['pagesInRange']);
  72. $this->assertEquals(3, $pagination['firstPageInRange']);
  73. $this->assertEquals(6, $pagination['lastPageInRange']);
  74. $view->setPageRange(3);
  75. $pagination = $view->getPaginationData();
  76. $this->assertEquals(3, $pagination['previous']);
  77. $this->assertEquals(array(3, 4, 5), $pagination['pagesInRange']);
  78. $this->assertEquals(3, $pagination['firstPageInRange']);
  79. $this->assertEquals(5, $pagination['lastPageInRange']);
  80. }
  81. /**
  82. * @test
  83. */
  84. function shouldNotFallbackToPageInCaseIfExceedsItemLimit()
  85. {
  86. $p = new Paginator;
  87. $view = $p->paginate(range(1, 9), 2, 10);
  88. $items = $view->getItems();
  89. $this->assertTrue(empty($items));
  90. }
  91. }