Skip to content

Commit

Permalink
Return event response for initialize update event
Browse files Browse the repository at this point in the history
  • Loading branch information
dannyvw committed Dec 11, 2017
1 parent a3ec424 commit 7c5ae8c
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,10 @@ public function updateAction(Request $request): Response
return $this->viewHandler->handle($configuration, View::create($form, Response::HTTP_BAD_REQUEST));
}

$this->eventDispatcher->dispatchInitializeEvent(ResourceActions::UPDATE, $configuration, $resource);
$initializeEvent = $this->eventDispatcher->dispatchInitializeEvent(ResourceActions::UPDATE, $configuration, $resource);
if ($initializeEvent->hasResponse()) {
return $initializeEvent->getResponse();
}

$view = View::create()
->setData([
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,8 @@ function it_returns_a_html_response_for_updating_resource_form(
$resourceFormFactory->create($configuration, $resource)->willReturn($form);

$eventDispatcher->dispatchInitializeEvent(ResourceActions::UPDATE, $configuration, $resource)->willReturn($event);
$event->isStopped()->willReturn(false);
$event->hasResponse()->willReturn(false);

$request->isMethod('PATCH')->willReturn(false);
$request->getMethod()->willReturn('GET');
Expand Down Expand Up @@ -916,6 +918,8 @@ function it_returns_a_html_response_for_invalid_form_during_resource_update(
$resourceFormFactory->create($configuration, $resource)->willReturn($form);

$eventDispatcher->dispatchInitializeEvent(ResourceActions::UPDATE, $configuration, $resource)->willReturn($event);
$event->isStopped()->willReturn(false);
$event->hasResponse()->willReturn(false);

$request->isMethod('PATCH')->willReturn(false);
$request->getMethod()->willReturn('PUT');
Expand Down Expand Up @@ -1154,6 +1158,60 @@ function it_uses_response_from_post_update_event_if_defined(
$this->updateAction($request)->shouldReturn($redirectResponse);
}

function it_uses_response_from_initialize_update_event_if_defined(
MetadataInterface $metadata,
RequestConfigurationFactoryInterface $requestConfigurationFactory,
RepositoryInterface $repository,
ObjectManager $manager,
SingleResourceProviderInterface $singleResourceProvider,
ResourceFormFactoryInterface $resourceFormFactory,
RedirectHandlerInterface $redirectHandler,
FlashHelperInterface $flashHelper,
AuthorizationCheckerInterface $authorizationChecker,
EventDispatcherInterface $eventDispatcher,
ResourceUpdateHandlerInterface $resourceUpdateHandler,
RequestConfiguration $configuration,
ResourceInterface $resource,
Form $form,
ResourceControllerEvent $initializeEvent,
Request $request,
Response $response
): void {
$metadata->getApplicationName()->willReturn('sylius');
$metadata->getName()->willReturn('product');

$requestConfigurationFactory->create($metadata, $request)->willReturn($configuration);
$configuration->hasPermission()->willReturn(true);
$configuration->getPermission(ResourceActions::UPDATE)->willReturn('sylius.product.update');
$configuration->hasStateMachine()->willReturn(false);

$authorizationChecker->isGranted($configuration, 'sylius.product.update')->willReturn(true);

$configuration->isHtmlRequest()->willReturn(true);
$configuration->getTemplate(ResourceActions::UPDATE . '.html')->willReturn('SyliusShopBundle:Product:update.html.twig');

$singleResourceProvider->get($configuration, $repository)->willReturn($resource);
$resourceFormFactory->create($configuration, $resource)->willReturn($form);

$request->getMethod()->willReturn('GET');

$form->handleRequest($request)->willReturn($form);
$form->isSubmitted()->willReturn(false);
$form->isValid()->willReturn(false);

$eventDispatcher->dispatchPreEvent(ResourceActions::UPDATE, $configuration, $resource)->shouldNotBeCalled();
$resourceUpdateHandler->handle($resource, $configuration, $manager)->shouldNotBeCalled();
$flashHelper->addSuccessFlash($configuration, ResourceActions::UPDATE, $resource)->shouldNotBeCalled();
$eventDispatcher->dispatchPostEvent(ResourceActions::UPDATE, $configuration, $resource)->shouldNotBeCalled();
$redirectHandler->redirectToResource($configuration, $resource)->shouldNotBeCalled();

$eventDispatcher->dispatchInitializeEvent(ResourceActions::UPDATE, $configuration, $resource)->willReturn($initializeEvent);
$initializeEvent->hasResponse()->willReturn(true);
$initializeEvent->getResponse()->willReturn($response);

$this->updateAction($request)->shouldReturn($response);
}

function it_returns_a_non_html_response_for_correctly_updated_resource(
MetadataInterface $metadata,
ParameterBagInterface $parameterBag,
Expand Down

0 comments on commit 7c5ae8c

Please sign in to comment.