Author: Paweł Jędrzejewski (pawel@sylius.org)
Author: Saša Stamenković (umpirsky@gmail.com)
Author: Gustavo Perdomo (gperdomor@gmail.com)
 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);
 }
Esempio n. 5
0
 /**
  * {@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);
 }
Esempio n. 6
0
 /**
  * {@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());
 }
Esempio n. 7
0
 /**
  * @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);
 }
Esempio n. 9
0
 /**
  * {@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);
 }
Esempio n. 10
0
 /**
  * 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);
 }
Esempio n. 11
0
 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]);
 }
Esempio n. 12
0
 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);
 }
Esempio n. 13
0
 /**
  * {@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;
 }
Esempio n. 14
0
 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);
 }
Esempio n. 15
0
 /**
  * {@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);
 }
Esempio n. 17
0
 /**
  * {@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);
 }
Esempio n. 19
0
 /**
  * {@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);
 }
Esempio n. 20
0
 /**
  * {@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);
 }
Esempio n. 21
0
 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);
 }
Esempio n. 22
0
 /**
  * {@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]);
 }
Esempio n. 23
0
 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);
 }
Esempio n. 24
0
 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);
 }
Esempio n. 25
0
 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);
 }
Esempio n. 26
0
 /**
  * {@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();
 }
Esempio n. 27
0
 /**
  * {@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);
 }
Esempio n. 29
0
 /**
  * {@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);
 }