Пример #1
0
 public function onWithdrawnFromSource(MoneyWereWithdrawnEnvelope $event)
 {
     if (!($process = $this->getProcessForTransaction($event->getTransaction()))) {
         return;
     }
     $this->assertFinalized($process);
     $process->withdrawnFromSource();
     $process->depositOnTarget();
     $this->bus->handle(new TransferDepositCommand((string) $process->getTargetAccountNumber(), (int) $process->getAmount(), (string) $process->getTransaction()));
 }
Пример #2
0
 function it_emits_money_were_withdrawn_event(EventDispatcherInterface $dispatcher)
 {
     $dispatcher->dispatch(MoneyWereWithdrawnEnvelope::getEventName(), Argument::type(MoneyWereWithdrawnEnvelope::class))->shouldBeCalled();
     $events = new EventCollection([new MoneyWereWithdrawnEvent(AccountNumber::fromString('123ABC'), new Withdraw(Transaction::fromString('000'), 100))]);
     $this->beConstructedWith($dispatcher);
     $this->emit($events);
 }
 function it_appends_deposit_entry_when_money_were_withdrawn()
 {
     $accountNumber = AccountNumber::fromString('123ABC');
     $openAccount = new AccountOpenedEvent($accountNumber);
     $this->onAccountOpened(AccountOpenedEnvelope::wrap($openAccount));
     $withdraw = new MoneyWereWithdrawnEvent($accountNumber, new Withdraw(Transaction::generate(), 100));
     $this->onMoneyWereWithdrawn(MoneyWereWithdrawnEnvelope::wrap($withdraw));
     $this->getAccount('123ABC')->getHistory()[1]->getAmount()->shouldReturn(100);
 }
 function it_decreases_balance_when_money_were_withdrawn()
 {
     $accountNumber = AccountNumber::fromString('123ABC');
     $openAccount = new AccountOpenedEvent($accountNumber);
     $event = AccountOpenedEnvelope::wrap($openAccount);
     $this->onAccountOpened($event);
     $withdraw = new MoneyWereWithdrawnEvent($accountNumber, new Withdraw(Transaction::generate(), 100));
     $event = MoneyWereWithdrawnEnvelope::wrap($withdraw);
     $this->onMoneyWereWithdrawn($event);
     $this->getAccount('123ABC')->getBalance()->shouldReturn(-100);
 }
Пример #5
0
 function create_money_transfer_withdrawn_envelope()
 {
     return MoneyWereWithdrawnEnvelope::wrap(new MoneyWereWithdrawnEvent(AccountNumber::fromString('123ABC'), new Withdraw(Transaction::fromString('000'), 100)));
 }
Пример #6
0
 public function onMoneyWereWithdrawn(MoneyWereWithdrawnEnvelope $event)
 {
     $this->accounts[(string) $event->getAccountNumber()]->decreaseBy($event->getAmount());
 }
Пример #7
0
 public function onMoneyWereWithdrawn(MoneyWereWithdrawnEnvelope $event)
 {
     $this->accounts[(string) $event->getAccountNumber()]->withdraw($event->getTimestamp(), $event->getAmount());
 }