public static void ShouldContainsBalanceChangedEvent(this Atm atm, decimal delta)
        {
            BalanceChangedEvent domainEvent = (BalanceChangedEvent)atm.DomainEvents
                                              .SingleOrDefault(x => x.GetType() == typeof(BalanceChangedEvent));

            domainEvent.Should().NotBeNull();
            domainEvent.Delta.Should().Be(1.01m);
        }
 public void TransferMoneyToAccount(decimal value)
 {
     _typeOfAction   = "Transfer To";
     AccountBalance += value;
     BalanceChangedEvent?.Invoke(this, new AccountEventArgs()
     {
         TypeOfAction = _typeOfAction, AccountBalance = AccountBalance, TransferValue = value
     });
     _typeOfAction = null;
 }
 public void TransferMoneyFromAccount(decimal value)
 {
     _typeOfAction = "Transfer from";
     if (AccountBalance >= value)
     {
         AccountBalance -= value;
         BalanceChangedEvent?.Invoke(this, new AccountEventArgs()
         {
             TypeOfAction = _typeOfAction, AccountBalance = AccountBalance, TransferValue = value
         });
     }
     _typeOfAction = null;
 }
Beispiel #4
0
        public void Commission_is_rounded_up_to_the_next_cent()
        {
            Initer.Init("Server=(localdb)\\mssqllocaldb;Database=DddInPractice;Trusted_Connection=True;");
            BalanceChangedEvent balanceChangedEvent = null;

            DomainEvents_old.Register <BalanceChangedEvent>(ev => balanceChangedEvent = ev);
            var atm = new Atm();

            atm.LoadMoney(Dollar + TenCent);

            atm.TakeMoney(1.1m);

            atm.MoneyCharged.Should().Be(1.12m);
        }
Beispiel #5
0
        public void Commission_is_at_least_one_cent()
        {
            Initer.Init("Server=(localdb)\\mssqllocaldb;Database=DddInPractice;Trusted_Connection=True;");
            BalanceChangedEvent balanceChangedEvent = null;

            DomainEvents_old.Register <BalanceChangedEvent>(ev => balanceChangedEvent = ev);
            var atm = new Atm();

            atm.LoadMoney(Cent);

            atm.TakeMoney(0.01m);

            atm.MoneyCharged.Should().Be(0.02m);
        }
Beispiel #6
0
        public void Take_money_raises_an_event()
        {
            Initer.Init("Server=(localdb)\\mssqllocaldb;Database=DddInPractice;Trusted_Connection=True;");
            Atm atm = new Atm();

            atm.LoadMoney(Dollar);
            BalanceChangedEvent balanceChangedEvent = null;

            DomainEvents_old.Register <BalanceChangedEvent>(ev => balanceChangedEvent = ev);

            atm.TakeMoney(1m);

            balanceChangedEvent.Should().NotBeNull();
            balanceChangedEvent.Delta.Should().Be(1.01m);
        }
 public void Handle(BalanceChangedEvent e)
 {
     this.Version  = e.Version;
     this.Balance += e.Amount;
 }
Beispiel #8
0
 private void OnBalanceChanged()
 {
     BalanceChangedEvent?.Invoke(_Balance);
 }
Beispiel #9
0
 private void Apply(BalanceChangedEvent @event)
 {
     When((dynamic)@event);
     _changes.Add(@event);
 }
 private void BalanceSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e)
 {
     BalanceChangedEvent?.Invoke(this, BalanceSlider.Value);
 }