UrlWindowTest.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace Illuminate\Tests\Pagination;
  3. use Illuminate\Pagination\LengthAwarePaginator;
  4. use Illuminate\Pagination\UrlWindow;
  5. use PHPUnit\Framework\TestCase;
  6. class UrlWindowTest extends TestCase
  7. {
  8. public function testPresenterCanDetermineIfThereAreAnyPagesToShow()
  9. {
  10. $p = new LengthAwarePaginator($array = ['item1', 'item2', 'item3', 'item4'], 4, 2, 2);
  11. $window = new UrlWindow($p);
  12. $this->assertTrue($window->hasPages());
  13. }
  14. public function testPresenterCanGetAUrlRangeForASmallNumberOfUrls()
  15. {
  16. $p = new LengthAwarePaginator($array = ['item1', 'item2', 'item3', 'item4'], 4, 2, 2);
  17. $window = new UrlWindow($p);
  18. $this->assertEquals(['first' => [1 => '/?page=1', 2 => '/?page=2'], 'slider' => null, 'last' => null], $window->get());
  19. }
  20. public function testPresenterCanGetAUrlRangeForAWindowOfLinks()
  21. {
  22. $array = [];
  23. for ($i = 1; $i <= 20; $i++) {
  24. $array[$i] = 'item'.$i;
  25. }
  26. $p = new LengthAwarePaginator($array, count($array), 1, 12);
  27. $window = new UrlWindow($p);
  28. $slider = [];
  29. for ($i = 9; $i <= 15; $i++) {
  30. $slider[$i] = '/?page='.$i;
  31. }
  32. $this->assertEquals(['first' => [1 => '/?page=1', 2 => '/?page=2'], 'slider' => $slider, 'last' => [19 => '/?page=19', 20 => '/?page=20']], $window->get());
  33. /*
  34. * Test Being Near The End Of The List
  35. */
  36. $array = [];
  37. for ($i = 1; $i <= 20; $i++) {
  38. $array[$i] = 'item'.$i;
  39. }
  40. $p = new LengthAwarePaginator($array, count($array), 1, 17);
  41. $window = new UrlWindow($p);
  42. $last = [];
  43. for ($i = 11; $i <= 20; $i++) {
  44. $last[$i] = '/?page='.$i;
  45. }
  46. $this->assertEquals(['first' => [1 => '/?page=1', 2 => '/?page=2'], 'slider' => null, 'last' => $last], $window->get());
  47. }
  48. public function testCustomUrlRangeForAWindowOfLinks()
  49. {
  50. $array = [];
  51. for ($i = 1; $i <= 20; $i++) {
  52. $array[$i] = 'item'.$i;
  53. }
  54. $p = new LengthAwarePaginator($array, count($array), 1, 8);
  55. $p->onEachSide(1);
  56. $window = new UrlWindow($p);
  57. $slider = [];
  58. for ($i = 7; $i <= 9; $i++) {
  59. $slider[$i] = '/?page='.$i;
  60. }
  61. $this->assertEquals(['first' => [1 => '/?page=1', 2 => '/?page=2'], 'slider' => $slider, 'last' => [19 => '/?page=19', 20 => '/?page=20']], $window->get());
  62. }
  63. }