function it_returns_a_response_for_non_html_view_of_single_resource(MetadataInterface $metadata, RequestConfigurationFactoryInterface $requestConfigurationFactory, RequestConfiguration $configuration, AuthorizationCheckerInterface $authorizationChecker, RepositoryInterface $repository, SingleResourceProviderInterface $singleResourceProvider, ResourceInterface $resource, ViewHandlerInterface $viewHandler, EventDispatcherInterface $eventDispatcher, Request $request, Response $response) { $metadata->getApplicationName()->willReturn('sylius'); $metadata->getName()->willReturn('product'); $requestConfigurationFactory->create($metadata, $request)->willReturn($configuration); $configuration->hasPermission()->willReturn(true); $configuration->getPermission(ResourceActions::SHOW)->willReturn('sylius.product.show'); $authorizationChecker->isGranted($configuration, 'sylius.product.show')->willReturn(true); $singleResourceProvider->get($configuration, $repository)->willReturn($resource); $configuration->isHtmlRequest()->willReturn(false); $eventDispatcher->dispatch(ResourceActions::SHOW, $configuration, $resource)->shouldBeCalled(); $expectedView = View::create($resource); $viewHandler->handle($configuration, Argument::that($this->getViewComparingCallback($expectedView)))->willReturn($response); $this->showAction($request)->shouldReturn($response); }
/** * @param Request $request * * @return Response */ public function showAction(Request $request) { $configuration = $this->requestConfigurationFactory->create($this->metadata, $request); $this->isGrantedOr403($configuration, ResourceActions::SHOW); $resource = $this->findOr404($configuration); $this->eventDispatcher->dispatch(ResourceActions::SHOW, $configuration, $resource); $view = View::create($resource); if ($configuration->isHtmlRequest()) { $view->setTemplate($configuration->getTemplate(ResourceActions::SHOW . '.html'))->setTemplateVar($this->metadata->getName())->setData(['configuration' => $configuration, 'metadata' => $this->metadata, 'resource' => $resource, $this->metadata->getName() => $resource]); } return $this->viewHandler->handle($configuration, $view); }