public function testApplyToCollectionPaginationDisabled() { /** @var ObjectProphecy|Request $requestMock */ $requestMock = $this->prophesize('Symfony\\Component\\HttpFoundation\\Request'); /* @see PaginationExtension::applyToCollection */ $this->requestStackMock->getCurrentRequest()->willReturn($requestMock->reveal())->shouldBeCalledTimes(1); /* @see PaginationExtension::isPaginationEnabled */ $this->resourceMock->getEnablePaginationParameter()->willReturn('enablePagination')->shouldBeCalledTimes(1); $requestMock->get('enablePagination')->willReturn('true')->shouldBeCalledTimes(1); $this->resourceMock->isClientAllowedToEnablePagination()->willReturn(false)->shouldBeCalledTimes(1); $this->resourceMock->isPaginationEnabledByDefault()->willReturn(false)->shouldBeCalledTimes(1); /* @see PaginationExtension::getItemsPerPage */ $this->resourceMock->isClientAllowedToChangeItemsPerPage()->shouldNotBeCalled(); $this->resourceMock->getItemsPerPageParameter()->shouldNotBeCalled(); $requestMock->get('itemsPerPage')->shouldNotBeCalled(); /* @see PaginationExtension::getPage */ $this->resourceMock->getPageParameter()->shouldNotBeCalled(); $requestMock->get('page', 1)->shouldNotBeCalled(); /* @see PaginationExtension::applyToCollection */ $this->queryBuilderMock->setFirstResult(Argument::any())->shouldNotBeCalled(); $this->queryBuilderMock->setMaxResults(Argument::any())->shouldNotBeCalled(); $extension = new PaginationExtension($this->managerRegistryMock->reveal(), $this->requestStackMock->reveal()); $extension->applyToCollection($this->resourceMock->reveal(), $this->queryBuilderMock->reveal()); }
/** * Gets the current page. * * @param ResourceInterface $resource * @param Request $request * * @return float */ private function getPage(ResourceInterface $resource, Request $request) { return (double) $request->get($resource->getPageParameter(), 1.0); }
/** * Gets a collection URL for the given page. * * @param ResourceInterface $resource * @param array $parts * @param array $parameters * @param float $page * * @return string */ private function getPageUrl(ResourceInterface $resource, array $parts, array $parameters, $page) { if (1.0 !== $page) { $parameters[$resource->getPageParameter()] = $page; } $query = http_build_query($parameters, '', '&', PHP_QUERY_RFC3986); $parts['query'] = preg_replace('/%5B[0-9]+%5D/', '%5B%5D', $query); $url = $parts['path']; if ('' !== $parts['query']) { $url .= '?' . $parts['query']; } return $url; }