prophet = new \Prophecy\Prophet(); } /** * return a set of element to testGetFirstItemNumber. * * the set contains : * - the page number ; * - the number of item per page ; * - the expected first item number * * @return array */ public function generateGetFirstItemNumber() { return [ [1, 10, 0], [2, 10, 10], ]; } /** * return a set of element to testGetLastItemNumber. * * the set contains : * - the page number ; * - the number of item per page ; * - the expected last item number * * @return array */ public function generateGetLastItemNumber() { return [ [1, 10, 9], [2, 10, 19], ]; } /** * @param int $number * @param int $itemPerPage * @param int $expectedItemPerPage * @dataProvider generateGetFirstItemNumber */ public function testGetFirstItemNumber( $number, $itemPerPage, $expectedItemPerPage ) { $page = $this->generatePage($number, $itemPerPage); $this->assertEquals($expectedItemPerPage, $page->getFirstItemNumber()); } /** * @param int $number * @param int $itemPerPage * @param int $expectedItemPerPage * @dataProvider generateGetLastItemNumber */ public function testGetLastItemNumber( $number, $itemPerPage, $expectedItemPerPage ) { $page = $this->generatePage($number, $itemPerPage); $this->assertEquals($expectedItemPerPage, $page->getLastItemNumber()); } public function testPageNumber() { $page = $this->generatePage(1); $this->assertEquals(1, $page->getNumber()); } /** * @param int $itemPerPage * @param string $route * @param mixed $number * @param mixed $totalItems * * @return Page */ protected function generatePage( $number = 1, $itemPerPage = 10, $route = 'route', array $routeParameters = [], $totalItems = 100 ) { $urlGenerator = $this->prophet->prophesize(); $urlGenerator->willImplement(UrlGeneratorInterface::class); return new Page( $number, $itemPerPage, $urlGenerator->reveal(), $route, $routeParameters, $totalItems ); } }