function it_uses_custom_method_and_arguments_if_specified(RequestConfiguration $requestConfiguration, RepositoryInterface $repository, ResourceInterface $firstResource) { $requestConfiguration->isHtmlRequest()->willReturn(true); $requestConfiguration->getRepositoryMethod()->willReturn('findAll'); $requestConfiguration->getRepositoryArguments()->willReturn(array('foo')); $requestConfiguration->isPaginated()->willReturn(false); $requestConfiguration->isLimited()->willReturn(true); $requestConfiguration->getLimit()->willReturn(15); $repository->findAll('foo')->willReturn(array($firstResource)); $this->get($requestConfiguration, $repository)->shouldReturn(array($firstResource)); }
/** * {@inheritdoc} */ public function getResources(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { if (null !== ($repositoryMethod = $requestConfiguration->getRepositoryMethod())) { $callable = [$repository, $repositoryMethod]; $resources = call_user_func_array($callable, $requestConfiguration->getRepositoryArguments()); return $resources; } if (!$requestConfiguration->isPaginated() && !$requestConfiguration->isLimited()) { return $repository->findBy($requestConfiguration->getCriteria(), $requestConfiguration->getSorting()); } if (!$requestConfiguration->isPaginated()) { return $repository->findBy($requestConfiguration->getCriteria(), $requestConfiguration->getSorting(), $requestConfiguration->getLimit()); } return $repository->createPaginator($requestConfiguration->getCriteria(), $requestConfiguration->getSorting()); }
/** * {@inheritdoc} */ public function getResources(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { $repositoryMethod = $requestConfiguration->getRepositoryMethod(); if (null !== $repositoryMethod) { $arguments = array_values($requestConfiguration->getRepositoryArguments()); return $repository->{$repositoryMethod}(...$arguments); } if (!$requestConfiguration->isPaginated() && !$requestConfiguration->isLimited()) { return $repository->findAll(); } if (!$requestConfiguration->isPaginated()) { return $repository->findBy($requestConfiguration->getCriteria(), $requestConfiguration->getSorting(), $requestConfiguration->getLimit()); } return $repository->createPaginator($requestConfiguration->getCriteria(), $requestConfiguration->getSorting()); }
/** * {@inheritdoc} */ public function get(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { if (null !== ($repositoryMethod = $requestConfiguration->getRepositoryMethod())) { $callable = [$repository, $repositoryMethod]; return call_user_func_array($callable, $requestConfiguration->getRepositoryArguments()); } if (!$requestConfiguration->isPaginated() && !$requestConfiguration->isLimited()) { return $repository->findAll(); } if (!$requestConfiguration->isPaginated()) { return $repository->findBy($requestConfiguration->getCriteria(), $requestConfiguration->getSorting(), $requestConfiguration->getLimit()); } $request = $requestConfiguration->getRequest(); /** @var Pagerfanta $paginator */ $paginator = $repository->createPaginator($requestConfiguration->getCriteria(), $requestConfiguration->getSorting()); $paginator->setCurrentPage($request->query->get('page', 1)); if (!$requestConfiguration->isHtmlRequest()) { $route = new Route($request->attributes->get('_route'), array_merge($request->attributes->get('_route_params'), $request->query->all())); return $this->pagerfantaRepresentationFactory->createRepresentation($paginator, $route); } return $paginator; }
function it_sets_current_page_on_paginator_from_custom_method(RequestConfiguration $requestConfiguration, RepositoryInterface $repository, Pagerfanta $paginator, Request $request, ParameterBag $queryParameters) { $requestConfiguration->isHtmlRequest()->willReturn(true); $requestConfiguration->getRepositoryMethod()->willReturn('findAll'); $requestConfiguration->getRepositoryArguments()->willReturn(['foo']); $requestConfiguration->isPaginated()->willReturn(true); $requestConfiguration->getPaginationMaxPerPage()->willReturn(5); $requestConfiguration->isLimited()->willReturn(true); $requestConfiguration->getLimit()->willReturn(15); $repository->findAll('foo')->willReturn($paginator); $requestConfiguration->getRequest()->willReturn($request); $request->query = $queryParameters; $queryParameters->get('page', 1)->willReturn(8); $paginator->setMaxPerPage(5)->shouldBeCalled(); $paginator->setCurrentPage(8)->shouldBeCalled(); $this->get($requestConfiguration, $repository)->shouldReturn($paginator); }