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); }
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); }
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 virtual void TakeMoney(decimal amount) { if (CanTakeMoney(amount) != string.Empty) { throw new InvalidOperationException(); } Money output = MoneyInside.Allocate(amount); MoneyInside -= output; decimal amountWithCommission = CalculateAmountWithCommission(amount); MoneyCharged += amountWithCommission; DomainEvents_old.Raise(new BalanceChangedEvent(amountWithCommission)); }
public static void Init(string connectionString) { SessionFactory.Init(connectionString); HeadOfficeInstance.Init(); DomainEvents_old.Init(); }