/** * Test recalculate. * @covers Rentalhost\VanillaPagination\Pagination::setCurrentPage * @covers Rentalhost\VanillaPagination\Pagination::setCurrentItem * @covers Rentalhost\VanillaPagination\Pagination::setTotalItems * @covers Rentalhost\VanillaPagination\Pagination::setItemsPerPage * @covers Rentalhost\VanillaPagination\Pagination::getCurrentPageOffsets */ public function testRecalculate() { $pagination = new Pagination(200, 20); $pagination->setCurrentPage(1); static::assertSame(1, $pagination->getCurrentPage()); static::assertSame(200, $pagination->getTotalItems()); static::assertSame(20, $pagination->getItemsPerPage()); static::assertSame(10, $pagination->getTotalPages()); static::assertTrue($pagination->hasPages()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(1, $pageOffsets->firstItem); static::assertSame(20, $pageOffsets->lastItem); // Total items: 100. $pagination->setTotalItems(100); static::assertSame(1, $pagination->getCurrentPage()); static::assertSame(100, $pagination->getTotalItems()); static::assertSame(20, $pagination->getItemsPerPage()); static::assertSame(5, $pagination->getTotalPages()); static::assertTrue($pagination->hasPages()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(1, $pageOffsets->firstItem); static::assertSame(20, $pageOffsets->lastItem); // Total items: 0. $pagination->setTotalItems(0); static::assertSame(0, $pagination->getCurrentPage()); static::assertSame(0, $pagination->getTotalItems()); static::assertSame(20, $pagination->getItemsPerPage()); static::assertSame(0, $pagination->getTotalPages()); static::assertFalse($pagination->hasPages()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(0, $pageOffsets->firstItem); static::assertSame(0, $pageOffsets->lastItem); // Total items: 150. $pagination->setTotalItems(150); static::assertSame(1, $pagination->getCurrentPage()); static::assertSame(150, $pagination->getTotalItems()); static::assertSame(20, $pagination->getItemsPerPage()); static::assertSame(8, $pagination->getTotalPages()); static::assertTrue($pagination->hasPages()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(1, $pageOffsets->firstItem); static::assertSame(20, $pageOffsets->lastItem); // Items per page: 40. $pagination->setItemsPerPage(40); static::assertSame(1, $pagination->getCurrentPage()); static::assertSame(150, $pagination->getTotalItems()); static::assertSame(40, $pagination->getItemsPerPage()); static::assertSame(4, $pagination->getTotalPages()); static::assertTrue($pagination->hasPages()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(1, $pageOffsets->firstItem); static::assertSame(40, $pageOffsets->lastItem); // Current page: 5. $pagination->setCurrentPage(5); static::assertSame(4, $pagination->getCurrentPage()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(121, $pageOffsets->firstItem); static::assertSame(150, $pageOffsets->lastItem); // Items per page: 20. $pagination->setItemsPerPage(20); static::assertSame(7, $pagination->getCurrentPage()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(121, $pageOffsets->firstItem); static::assertSame(140, $pageOffsets->lastItem); // Total items: 0, Items per page: 50. $pagination->setTotalItems(0); $pagination->setItemsPerPage(50); static::assertSame(0, $pagination->getCurrentPage()); $pageOffsets = $pagination->getCurrentPageOffsets(); static::assertSame(0, $pageOffsets->firstItem); static::assertSame(0, $pageOffsets->lastItem); }