/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response */ public function indexAction(Request $request) { $configuration = $this->requestConfigurationFactory->create($this->metadata, $request); $this->isGrantedOr403($configuration, ResourceActions::INDEX); $resources = $this->resourcesCollectionProvider->get($configuration, $this->repository); $view = View::create($resources); if ($configuration->isHtmlRequest()) { $view->setTemplate($configuration->getTemplate(ResourceActions::INDEX . '.html'))->setTemplateVar($this->metadata->getPluralName())->setData(['configuration' => $configuration, 'metadata' => $this->metadata, 'resources' => $resources, $this->metadata->getPluralName() => $resources]); } return $this->viewHandler->handle($configuration, $view); }
function it_returns_a_response_for_html_view_of_paginated_resources(MetadataInterface $metadata, RequestConfigurationFactoryInterface $requestConfigurationFactory, RequestConfiguration $configuration, AuthorizationCheckerInterface $authorizationChecker, RepositoryInterface $repository, ResourcesCollectionProviderInterface $resourcesCollectionProvider, ResourceInterface $resource1, ResourceInterface $resource2, ViewHandlerInterface $viewHandler, Request $request, Response $response) { $metadata->getApplicationName()->willReturn('sylius'); $metadata->getName()->willReturn('product'); $metadata->getPluralName()->willReturn('products'); $requestConfigurationFactory->create($metadata, $request)->willReturn($configuration); $configuration->hasPermission()->willReturn(true); $configuration->getPermission(ResourceActions::INDEX)->willReturn('sylius.product.index'); $authorizationChecker->isGranted($configuration, 'sylius.product.index')->willReturn(true); $configuration->isHtmlRequest()->willReturn(true); $configuration->getTemplate(ResourceActions::INDEX)->willReturn('SyliusShopBundle:Product:index.html.twig'); $resourcesCollectionProvider->get($configuration, $repository)->willReturn(array($resource1, $resource2)); $expectedView = View::create()->setData(array('metadata' => $metadata, 'resources' => array($resource1, $resource2), 'products' => array($resource1, $resource2)))->setTemplateVar('products')->setTemplate('SyliusShopBundle:Product:index.html.twig'); $viewHandler->handle($configuration, Argument::that($this->getViewComparingCallback($expectedView)))->willReturn($response); $this->indexAction($request)->shouldReturn($response); }