setId($this->getUuid()) ->setSlug('group'); return (new GroupOffer()) // @phpstan-ignore-line ->setId($this->getUuid()) ->setGroup($group); } private function getUser(): User { return (new User()) ->setId($this->getUuid()); } /** * @return CommandBusInterface&MockObject */ private function getCommandBus(): MockObject { return $this->getMockBuilder(CommandBusInterface::class) ->disableOriginalConstructor() ->getMock(); } /** * @return GroupOfferRepository&MockObject */ private function getGroupOfferRepo(): GroupOfferRepository { $groupOfferRepo = $this->getMockBuilder(GroupOfferRepository::class) ->disableOriginalConstructor() ->getMock(); $groupOfferRepo->method('find') ->willReturn($this->getGroupOffer()); return $groupOfferRepo; } /** * Too complicated, the controller should be refactored. */ public function testUnprocessableEntityHttpException(): void { $httpRequestVerifierInterface = $this->getMockBuilder(HttpRequestVerifierInterface::class) ->disableOriginalConstructor() ->getMock(); $httpRequestVerifierInterface->method('verify') ->willThrowException(new UnprocessableEntityHttpException()); $payum = $this->getMockBuilder(Payum::class) ->disableOriginalConstructor() ->getMock(); $payum->method('getHttpRequestVerifier') ->willReturn($httpRequestVerifierInterface); $translator = $this->getMockBuilder(TranslatorInterface::class) ->disableOriginalConstructor() ->getMock(); $doneAction = new DoneAction( $this->getGroupOfferRepo(), $payum, $translator, $this->getCommandBus() ); $this->expectException(\RuntimeException::class); $this->expectExceptionMessage('Cannot verify Payum token'); $doneAction->__invoke(new Request(), TestReference::UUID_404, $this->getUser()); } /** * All this to test a line :/. */ public function testFlashWarning(): void { $httpRequestVerifierInterface = $this->getMockBuilder(HttpRequestVerifierInterface::class) ->disableOriginalConstructor() ->getMock(); $httpRequestVerifierInterface->method('verify') ->willReturn(new PaymentToken()); $payum = $this->getMockBuilder(Payum::class) ->disableOriginalConstructor() ->getMock(); $payum->method('getHttpRequestVerifier') ->willReturn($httpRequestVerifierInterface); $translator = $this->getMockBuilder(TranslatorInterface::class) ->disableOriginalConstructor() ->getMock(); $comandBus = $this->getCommandBus(); $comandBus->method('dispatch')->willReturn(new GetHumanStatus(new PaymentToken())); $doneAction = new DoneAction( $this->getGroupOfferRepo(), $payum, $translator, $comandBus ); // set session! $session = $this->getMockBuilder(FlashBagAwareSessionInterface::class) ->disableOriginalConstructor() ->getMock(); $session->method('getFlashBag')->willReturn(new FlashBag()); $requesStack = $this->getMockBuilder(RequestStack::class) ->disableOriginalConstructor() ->getMock(); $requesStack->method('getSession')->willReturn($session); $container = $this->getMockBuilder(ContainerInterface::class) ->disableOriginalConstructor() ->getMock(); $container->method('get')->willReturn($requesStack); $doneAction->setContainer($container); $this->expectException(\Error::class); // or more mock are needed. To clean up later $doneAction->__invoke(new Request(), TestReference::UUID_404, $this->getUser()); } }