1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
<?php
namespace Illuminate\Tests\Pagination;
use Illuminate\Pagination\LengthAwarePaginator;
use PHPUnit\Framework\TestCase;
class LengthAwarePaginatorTest extends TestCase
{
/**
* @var \Illuminate\Pagination\LengthAwarePaginator
*/
private $p;
/**
* @var array
*/
private $options;
protected function setUp(): void
{
$this->options = ['onEachSide' => 5];
$this->p = new LengthAwarePaginator($array = ['item1', 'item2', 'item3', 'item4'], 4, 2, 2, $this->options);
}
protected function tearDown(): void
{
unset($this->p);
}
public function testLengthAwarePaginatorGetAndSetPageName()
{
$this->assertSame('page', $this->p->getPageName());
$this->p->setPageName('p');
$this->assertSame('p', $this->p->getPageName());
}
public function testLengthAwarePaginatorCanGiveMeRelevantPageInformation()
{
$this->assertEquals(2, $this->p->lastPage());
$this->assertEquals(2, $this->p->currentPage());
$this->assertTrue($this->p->hasPages());
$this->assertFalse($this->p->hasMorePages());
$this->assertEquals(['item1', 'item2', 'item3', 'item4'], $this->p->items());
}
public function testLengthAwarePaginatorSetCorrectInformationWithNoItems()
{
$paginator = new LengthAwarePaginator([], 0, 2, 1);
$this->assertEquals(1, $paginator->lastPage());
$this->assertEquals(1, $paginator->currentPage());
$this->assertFalse($paginator->hasPages());
$this->assertFalse($paginator->hasMorePages());
$this->assertEmpty($paginator->items());
}
public function testLengthAwarePaginatorCanGenerateUrls()
{
$this->p->setPath('http://website.com');
$this->p->setPageName('foo');
$this->assertSame('http://website.com',
$this->p->path());
$this->assertSame('http://website.com?foo=2',
$this->p->url($this->p->currentPage()));
$this->assertSame('http://website.com?foo=1',
$this->p->url($this->p->currentPage() - 1));
$this->assertSame('http://website.com?foo=1',
$this->p->url($this->p->currentPage() - 2));
}
public function testLengthAwarePaginatorCanGenerateUrlsWithQuery()
{
$this->p->setPath('http://website.com?sort_by=date');
$this->p->setPageName('foo');
$this->assertSame('http://website.com?sort_by=date&foo=2',
$this->p->url($this->p->currentPage()));
}
public function testLengthAwarePaginatorCanGenerateUrlsWithoutTrailingSlashes()
{
$this->p->setPath('http://website.com/test');
$this->p->setPageName('foo');
$this->assertSame('http://website.com/test?foo=2',
$this->p->url($this->p->currentPage()));
$this->assertSame('http://website.com/test?foo=1',
$this->p->url($this->p->currentPage() - 1));
$this->assertSame('http://website.com/test?foo=1',
$this->p->url($this->p->currentPage() - 2));
}
public function testLengthAwarePaginatorCorrectlyGenerateUrlsWithQueryAndSpaces()
{
$this->p->setPath('http://website.com?key=value%20with%20spaces');
$this->p->setPageName('foo');
$this->assertSame('http://website.com?key=value%20with%20spaces&foo=2',
$this->p->url($this->p->currentPage()));
}
public function testItRetrievesThePaginatorOptions()
{
$this->assertSame($this->options, $this->p->getOptions());
}
}
|