function it_calls_proper_factory_methods_based_on_configuration(RequestConfiguration $requestConfiguration, FactoryInterface $factory) { $requestConfiguration->getFactoryMethod()->willReturn('createNew'); $requestConfiguration->getFactoryArguments()->willReturn(['00032']); $factory->createNew('00032')->willReturn(['foo', 'bar']); $this->create($requestConfiguration, $factory)->shouldReturn(['foo', 'bar']); }
/** * {@inheritdoc} */ public function create(Grid $grid, Parameters $parameters, MetadataInterface $metadata, RequestConfiguration $requestConfiguration) { $driverConfiguration = $grid->getDriverConfiguration(); $request = $requestConfiguration->getRequest(); $grid->setDriverConfiguration($this->parametersParser->parseRequestValues($driverConfiguration, $request)); return new ResourceGridView($this->dataProvider->getData($grid, $parameters), $grid, $parameters, $metadata, $requestConfiguration); }
function it_creates_the_object_if_form_is_a_class_name(RequestConfiguration $requestConfiguration, ResourceInterface $resource, FormFactoryInterface $formFactory, FormInterface $form) { $requestConfiguration->isHtmlRequest()->willReturn(true); $requestConfiguration->getFormType()->willReturn(TextType::class); $formFactory->create(Argument::type(TextType::class), $resource)->willReturn($form); $this->create($requestConfiguration, $resource)->shouldReturn($form); }
function it_uses_a_custom_method_if_configured(RequestConfiguration $requestConfiguration, RepositoryInterface $repository, ResourceInterface $resource) { $requestConfiguration->getRepositoryMethod()->willReturn('findAll'); $requestConfiguration->getRepositoryArguments()->willReturn(array('foo')); $repository->findAll('foo')->willReturn($resource); $this->get($requestConfiguration, $repository)->shouldReturn($resource); }
/** * {@inheritdoc} */ public function redirect(RequestConfiguration $configuration, $url, $status = 302) { if ($configuration->isHeaderRedirection()) { return new Response('', 200, ['X-SYLIUS-LOCATION' => $url . $configuration->getRedirectHash()]); } return new RedirectResponse($url . $configuration->getRedirectHash(), $status); }
/** * {@inheritdoc} */ public function apply(RequestConfiguration $configuration, ResourceInterface $resource) { if (!$configuration->hasStateMachine()) { throw new \InvalidArgumentException('State machine must be configured to apply transition, check your routing.'); } $this->stateMachineFactory->get($resource, $configuration->getStateMachineGraph())->apply($configuration->getStateMachineTransition()); }
/** * @param RequestConfiguration $configuration * * @return RedirectResponse */ protected function redirectToCartSummary(RequestConfiguration $configuration) { if (null === $configuration->getParameters()->get('redirect')) { return $this->redirectHandler->redirectToRoute($configuration, $this->getCartSummaryRoute()); } return $this->redirectHandler->redirectToRoute($configuration, $configuration->getParameters()->get('redirect')); }
/** * @param RequestConfiguration $requestConfiguration * @param string $permission * * @return bool */ public function isGranted(RequestConfiguration $requestConfiguration, $permission) { if (!$requestConfiguration->hasPermission()) { return true; } return $this->rbacAuthorizationChecker->isGranted($permission); }
/** * {@inheritdoc} */ public function create(RequestConfiguration $requestConfiguration, FactoryInterface $factory) { if (null === ($method = $requestConfiguration->getFactoryMethod())) { return $factory->createNew(); } $arguments = array_values($requestConfiguration->getFactoryArguments()); return $factory->{$method}(...$arguments); }
/** * Redirect to specific URL or to cart. * * @param Request $request * * @return RedirectResponse */ private function redirectAfterAdd(RequestConfiguration $configuration) { $request = $configuration->getRequest(); if ($request->query->has('_redirect_to')) { return $this->redirectHandler->redirect($configuration, $request->query->get('_redirect_to')); } return $this->redirectToCartSummary($configuration); }
protected function redirectToCartSummary(RequestConfiguration $configuration) { $format = $configuration->getRequest()->getRequestFormat('html'); if (null === $configuration->getParameters()->get('redirect')) { return $this->getRedirectHandler()->redirectToRoute($configuration, $this->getCartSummaryRoute(), ['_format' => $format]); } return $this->getRedirectHandler()->redirectToRoute($configuration, $this->getCartSummaryRoute(), ['_format' => $format]); }
function it_creates_form_without_root_name_and_disables_csrf_protection_for_non_html_requests(RequestConfiguration $requestConfiguration, ResourceInterface $resource, FormFactoryInterface $formFactory, FormInterface $form) { $requestConfiguration->isHtmlRequest()->willReturn(false); $requestConfiguration->getFormType()->willReturn('sylius_product_api'); $requestConfiguration->getFormOptions()->willReturn([]); $formFactory->createNamed('', 'sylius_product_api', $resource, ['csrf_protection' => false])->willReturn($form); $this->create($requestConfiguration, $resource)->shouldReturn($form); }
/** * {@inheritdoc} */ public function dispatchPostEvent($eventName, RequestConfiguration $requestConfiguration, ResourceInterface $resource) { $eventName = $requestConfiguration->getEvent() ?: $eventName; $metadata = $requestConfiguration->getMetadata(); $event = $this->getEvent($resource); $this->eventDispatcher->dispatch(sprintf('%s.%s.post_%s', $metadata->getApplicationName(), $metadata->getName(), $eventName), $event); return $event; }
function it_applies_configured_state_machine_transition(RequestConfiguration $requestConfiguration, ResourceInterface $resource, FactoryInterface $stateMachineFactory, StateMachineInterface $stateMachine) { $requestConfiguration->hasStateMachine()->willReturn(true); $requestConfiguration->getStateMachineGraph()->willReturn('sylius_product_review_state'); $requestConfiguration->getStateMachineTransition()->willReturn('reject'); $stateMachineFactory->get($resource, 'sylius_product_review_state')->willReturn($stateMachine); $stateMachine->apply('reject')->shouldBeCalled(); $this->apply($requestConfiguration, $resource); }
/** * {@inheritdoc} */ public function create(RequestConfiguration $requestConfiguration, ResourceInterface $resource) { $formType = $requestConfiguration->getFormType(); $formOptions = $requestConfiguration->getFormOptions(); if ($requestConfiguration->isHtmlRequest()) { return $this->formFactory->create($formType, $resource, $formOptions); } return $this->formFactory->createNamed('', $formType, $resource, array_merge($formOptions, ['csrf_protection' => false])); }
function it_uses_rbac_authorization_checker(RequestConfiguration $requestConfiguration, RbacAuthorizationCheckerInterface $rbacAuthorizationChecker) { $requestConfiguration->hasPermission()->willReturn(true); $requestConfiguration->getPermission('sylius.product.foo')->willReturn('sylius.product.foo'); $rbacAuthorizationChecker->isGranted('sylius.product.foo')->willReturn(false); $this->isGranted($requestConfiguration, 'sylius.product.foo')->shouldReturn(false); $rbacAuthorizationChecker->isGranted('sylius.product.foo')->willReturn(true); $this->isGranted($requestConfiguration, 'sylius.product.foo')->shouldReturn(true); }
/** * {@inheritdoc} */ public function create(RequestConfiguration $requestConfiguration, FactoryInterface $factory) { if (null === ($method = $requestConfiguration->getFactoryMethod())) { return $factory->createNew(); } $callable = [$factory, $method]; $arguments = $requestConfiguration->getFactoryArguments(); return call_user_func_array($callable, $arguments); }
function it_uses_data_provider_to_create_a_view_with_data_and_definition(DataProviderInterface $dataProvider, ParametersParserInterface $parametersParser, Grid $grid, Parameters $parameters, MetadataInterface $resourceMetadata, Request $request, RequestConfiguration $requestConfiguration) { $expectedResourceGridView = new ResourceGridView(['foo', 'bar'], $grid->getWrappedObject(), $parameters->getWrappedObject(), $resourceMetadata->getWrappedObject(), $requestConfiguration->getWrappedObject()); $requestConfiguration->getRequest()->willReturn($request); $parametersParser->parseRequestValues(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => ['$customerId']]], $request)->willReturn(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => [5]]]); $grid->getDriverConfiguration()->willReturn(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => ['$customerId']]]); $grid->setDriverConfiguration(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => [5]]])->shouldBeCalled(); $dataProvider->getData($grid, $parameters)->willReturn(['foo', 'bar']); $this->create($grid, $parameters, $resourceMetadata, $requestConfiguration)->shouldBeSameResourceGridViewAs($expectedResourceGridView); }
/** * {@inheritdoc} */ public function addSuccessFlash(RequestConfiguration $requestConfiguration, $actionName, ResourceInterface $resource = null) { $metadata = $requestConfiguration->getMetadata(); $flashMessage = $requestConfiguration->getFlashMessage($actionName); $translatedMessage = $this->translateMessage($flashMessage, $metadata); if ($flashMessage === $translatedMessage) { $translatedMessage = $this->translateMessage(sprintf('sylius.resource.%s', $actionName), $metadata); } $this->session->getBag('flashes')->add('success', $translatedMessage); }
/** * {@inheritdoc} */ public function handle(RequestConfiguration $requestConfiguration, View $view) { if (!$requestConfiguration->isHtmlRequest()) { $this->restViewHandler->setExclusionStrategyGroups($requestConfiguration->getSerializationGroups()); if ($version = $requestConfiguration->getSerializationVersion()) { $this->restViewHandler->setExclusionStrategyVersion($version); } $view->getSerializationContext()->enableMaxDepthChecks(); } return $this->restViewHandler->handle($view); }
public function findOr404(RequestConfiguration $configuration) { $request = $configuration->getRequest(); if ($request->attributes->has('_page')) { $page = $request->attributes->get('_page'); if ($page->getId() !== null) { return $page; } } return parent::findOr404($configuration); }
/** * {@inheritdoc} */ public function create(RequestConfiguration $requestConfiguration, ResourceInterface $resource) { $formType = $requestConfiguration->getFormType(); if (false !== strpos($formType, '\\')) { $formType = new $formType(); } if ($requestConfiguration->isHtmlRequest()) { return $this->formFactory->create($formType, $resource); } return $this->formFactory->createNamed('', $formType, $resource, ['csrf_protection' => false]); }
function it_sets_proper_values_for_non_html_requests(RequestConfiguration $requestConfiguration, RestViewHandler $restViewHandler, Response $response) { $requestConfiguration->isHtmlRequest()->willReturn(false); $view = View::create(); $view->setSerializationContext(new SerializationContext()); $requestConfiguration->getSerializationGroups()->willReturn(['Detailed']); $requestConfiguration->getSerializationVersion()->willReturn('2.0.0'); $restViewHandler->setExclusionStrategyGroups(['Detailed'])->shouldBeCalled(); $restViewHandler->setExclusionStrategyVersion('2.0.0')->shouldBeCalled(); $restViewHandler->handle($view)->willReturn($response); $this->handle($requestConfiguration, $view)->shouldReturn($response); }
function it_adds_custom_message(SessionInterface $session, TranslatorBagInterface $translator, MessageCatalogueInterface $messageCatalogue, FlashBagInterface $flashBag, MetadataInterface $metadata, RequestConfiguration $requestConfiguration, ResourceInterface $resource) { $metadata->getApplicationName()->willReturn('app'); $metadata->getHumanizedName()->willReturn('book'); $requestConfiguration->getMetadata()->willReturn($metadata); $requestConfiguration->getFlashMessage('send')->willReturn('app.book.send'); $translator->getCatalogue('en')->willReturn($messageCatalogue); $messageCatalogue->has('app.book.send', 'flashes')->willReturn(true); $session->getBag('flashes')->willReturn($flashBag); $flashBag->add('success', 'app.book.send')->shouldBeCalled(); $this->addSuccessFlash($requestConfiguration, 'send', $resource); }
function it_uses_default_translation_if_message_is_not_translated(SessionInterface $session, FlashBagInterface $flashBag, TranslatorInterface $translator, MetadataInterface $metadata, RequestConfiguration $requestConfiguration, ResourceInterface $resource) { $metadata->getApplicationName()->willReturn('sylius'); $metadata->getName()->willReturn('product'); $metadata->getHumanizedName()->willReturn('product'); $requestConfiguration->getMetadata()->willReturn($metadata); $requestConfiguration->isHtmlRequest()->willReturn(true); $session->getBag('flashes')->willReturn($flashBag); $requestConfiguration->getFlashMessage(ResourceActions::CREATE)->willReturn('sylius.product.create'); $translator->trans('sylius.product.create', ['%resource%' => 'Product'], 'flashes')->willReturn('sylius.product.create'); $translator->trans('sylius.resource.create', ['%resource%' => 'Product'], 'flashes')->willReturn('Product has been successfully created.'); $flashBag->add('success', 'Product has been successfully created.')->shouldBeCalled(); $this->addSuccessFlash($requestConfiguration, ResourceActions::CREATE, $resource); }
/** * {@inheritdoc} */ public function getResources(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { if (!$requestConfiguration->hasGrid()) { return $this->decoratedResolver->getResources($requestConfiguration, $repository); } $gridDefinition = $this->gridProvider->get($requestConfiguration->getGrid()); $request = $requestConfiguration->getRequest(); $parameters = new Parameters($request->query->all()); $gridView = $this->gridViewFactory->create($gridDefinition, $parameters, $requestConfiguration->getMetadata(), $requestConfiguration); if ($requestConfiguration->isHtmlRequest()) { return $gridView; } return $gridView->getData(); }
/** * {@inheritdoc} */ public function addSuccessFlash(RequestConfiguration $requestConfiguration, $actionName, ResourceInterface $resource = null) { $metadata = $requestConfiguration->getMetadata(); $metadataName = $metadata->getHumanizedName(); $message = $requestConfiguration->getFlashMessage($actionName); if (false === $message) { return; } if ($this->isTranslationDefined($message, $this->defaultLocale)) { $this->addFlash('success', $message); return; } $this->addFlash('success', $this->getResourceMessage($actionName), ['%resource%' => ucfirst($metadataName)]); }
function it_creates_paginator_by_default(RequestConfiguration $requestConfiguration, RepositoryInterface $repository, Pagerfanta $paginator) { $requestConfiguration->isHtmlRequest()->willReturn(true); $requestConfiguration->getRepositoryMethod()->willReturn(null); $requestConfiguration->isPaginated()->willReturn(true); $requestConfiguration->getPaginationMaxPerPage()->willReturn(5); $requestConfiguration->isLimited()->willReturn(false); $requestConfiguration->getCriteria()->willReturn([]); $requestConfiguration->getSorting()->willReturn([]); $repository->createPaginator([], [])->willReturn($paginator); $this->getResources($requestConfiguration, $repository)->shouldReturn($paginator); }
/** * {@inheritdoc} */ public function get(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { if (null !== ($repositoryMethod = $requestConfiguration->getRepositoryMethod())) { $callable = array($repository, $repositoryMethod); return call_user_func_array($callable, $requestConfiguration->getRepositoryArguments()); } $criteria = array(); $request = $requestConfiguration->getRequest(); if ($request->attributes->has('id')) { $criteria = array('id' => $request->attributes->get('id')); } if ($request->attributes->has('slug')) { $criteria = array('slug' => $request->attributes->get('slug')); } return $repository->findOneBy($criteria); }
function it_creates_a_paginated_representation_for_pagerfanta_for_non_html_requests(ResourcesResolverInterface $resourcesResolver, RequestConfiguration $requestConfiguration, RepositoryInterface $repository, Pagerfanta $paginator, Request $request, ParameterBag $queryParameters, ParameterBag $requestAttributes, PagerfantaFactory $pagerfantaRepresentationFactory, PaginatedRepresentation $paginatedRepresentation) { $requestConfiguration->isHtmlRequest()->willReturn(false); $requestConfiguration->getPaginationMaxPerPage()->willReturn(8); $resourcesResolver->getResources($requestConfiguration, $repository)->willReturn($paginator); $requestConfiguration->getRequest()->willReturn($request); $request->query = $queryParameters; $queryParameters->get('page', 1)->willReturn(6); $queryParameters->all()->willReturn(['foo' => 2, 'bar' => 15]); $request->attributes = $requestAttributes; $requestAttributes->get('_route')->willReturn('sylius_product_index'); $requestAttributes->get('_route_params')->willReturn(['slug' => 'foo-bar']); $paginator->setMaxPerPage(8)->shouldBeCalled(); $paginator->setCurrentPage(6)->shouldBeCalled(); $pagerfantaRepresentationFactory->createRepresentation($paginator, Argument::type(Route::class))->willReturn($paginatedRepresentation); $this->get($requestConfiguration, $repository)->shouldReturn($paginatedRepresentation); }