Example #1
0
 private function handleEvent(Account $aggregate, DomainEvent $event)
 {
     $handlingMethod = $aggregate->getHandlerMethodFor($event);
     if (!method_exists($aggregate, $handlingMethod)) {
         throw new \InvalidArgumentException('Unknown event received: ' . get_class($event));
     }
     $aggregate->{$handlingMethod}($event);
 }
Example #2
0
 function it_handles_deposit_command(AccountingInterface $accounting, Account $account)
 {
     $account->deposit(Argument::type(Deposit::class))->shouldBeCalled();
     $accounting->getAccount(Argument::type(AccountNumber::class))->willReturn($account);
     $accounting->commit()->shouldBeCalled();
     $command = new DepositCommand('123ABC', 100);
     $this->beConstructedWith($accounting);
     $this->handle($command);
 }
 function it_handles_transfer_withdraw_command(AccountingInterface $accounting, Account $account)
 {
     $account->withdraw(Argument::type(Withdraw::class))->shouldBeCalled();
     $accounting->getAccount(Argument::type(AccountNumber::class))->willReturn($account);
     $accounting->commit()->shouldBeCalled();
     $command = new TransferWithdrawCommand('123ABC', 100, Transaction::fromString('000'));
     $this->beConstructedWith($accounting);
     $this->handle($command);
 }
Example #4
0
 public function handle(OpenAccountCommand $command)
 {
     $account = Account::open(AccountNumber::fromString($command->getAccountNumber()));
     $this->accounting->addAccount($account);
     $this->accounting->commit();
 }