Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.88 KB | None | 0 0
  1. final class CreateCartRequest
  2. {
  3.     /** @var string|null */
  4.     private $token;
  5.  
  6.     /** @var string */
  7.     private $cartId;
  8.  
  9.     public function __construct(Request $request)
  10.     {
  11.         $this->token = $request->query->get('token');
  12.     }
  13.  
  14.     public static function fromHttpRequest(Request $request): self
  15.     {
  16.         return new self($request);
  17.     }
  18.  
  19.     public function getCommand(): CreateCart
  20.     {
  21.         return (new CreateCartFactory())->createFromDTO($this);
  22.     }
  23.  
  24.     public function getToken(): ?string
  25.     {
  26.         return $this->token;
  27.     }
  28. }
  29.  
  30. //**************************************************************
  31.  
  32.     function it_creates_cart(
  33.         ValidatorInterface $validator,
  34.         ConstraintViolationListInterface $violationList,
  35.         MessageBusInterface $bus,
  36.         GenericSuccessViewFactoryInterface $genericSuccessViewFactory,
  37.         ViewHandlerInterface $viewHandler
  38.     ): void
  39.     {
  40.         $request = new Request([
  41.             'token' => 'token'
  42.         ]);
  43.  
  44.         $createCartRequest = new CreateCartRequest($request);
  45.  
  46.         $validator->validate($createCartRequest)->willReturn($violationList);
  47.  
  48.         $envelope = new Envelope($createCartRequest->getCommand(), []);
  49.         $bus->dispatch(Argument::any())->willReturn($envelope);
  50.  
  51.         $genericSuccessViewFactory->create(Argument::any())->willReturn(new GenericSuccessView());
  52.  
  53.         $viewHandler->handle(Argument::any(), Argument::any())->willReturn(new Response());
  54.  
  55.         $this->__invoke($request);
  56.     }
  57.  
  58. //**************************************************************
  59.  
  60. final class CreateCartFactory implements CreateCartFactoryInterface
  61. {
  62.     public function createFromDTO(CreateCartRequest $createCartRequest): CreateCart
  63.     {
  64.         $cartId = Uuid::uuid4()->toString();
  65.         return new CreateCart($createCartRequest->getToken(), $cartId);
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement