function it_rethrows_exception_and_rollbacks_transaction_in_catch_exception_command_endpoint(Factory $factory, Transaction $transaction, ServiceLocator $serviceLocator) { $command = new CreateCart((string) CartId::generate(), "PLN"); $factory->open()->willReturn($transaction); $transaction->rollback()->shouldBeCalled(); $this->pre($command, $serviceLocator); $this->shouldThrow(\Exception::class)->during('catchException', [$command, new \Exception(), $serviceLocator]); }
/** * @param string $orderId */ public function customerPlacedOrder(string $orderId) { $transaction = $this->transactionFactory->open(); try { $this->eventLog->log(new CustomerPlacedOrder($orderId)); $transaction->commit(); } catch (\Exception $e) { $transaction->rollback(); throw $e; } }
/** * @param Command $command * @param ServiceLocator $serviceLocator */ public function pre(Command $command, ServiceLocator $serviceLocator) { $this->transaction = $this->factory->open(); }