public void Withdraw_should_throw_if_current_balance_is_below_amount() { var customer = Customer.Create("lorem", "ipsum", "*****@*****.**"); var sut = Account.Create(customer, Currency.CanadianDollar); var currencyConverter = new FakeCurrencyConverter(); sut.Balance.Should().Be(Money.Zero(Currency.CanadianDollar)); Assert.Throws <AccountTransactionException>(() => sut.Withdraw(new Money(Currency.CanadianDollar, 1), currencyConverter)); }
public void Withdraw_should_remove_value() { var customer = Customer.Create("lorem", "ipsum", "*****@*****.**"); var sut = Account.Create(customer, Currency.CanadianDollar); var currencyConverter = new FakeCurrencyConverter(); sut.Deposit(new Money(Currency.CanadianDollar, 10), currencyConverter); sut.Withdraw(new Money(Currency.CanadianDollar, 1), currencyConverter); sut.Balance.Should().Be(new Money(Currency.CanadianDollar, 9)); sut.Version.Should().Be(3); }
public void Create_should_create_valid_Account_instance() { var currencyConverter = new FakeCurrencyConverter(); var customer = new Customer(Guid.NewGuid(), "lorem", "ipsum", "*****@*****.**"); var account = Account.Create(customer, Currency.CanadianDollar); account.Deposit(new Money(Currency.CanadianDollar, 10), currencyConverter); account.Deposit(new Money(Currency.CanadianDollar, 42), currencyConverter); account.Withdraw(new Money(Currency.CanadianDollar, 4), currencyConverter); account.Deposit(new Money(Currency.CanadianDollar, 71), currencyConverter); var instance = BaseAggregateRoot <Account, Guid> .Create(account.Events); instance.Should().NotBeNull(); instance.Id.Should().Be(account.Id); instance.OwnerId.Should().Be(customer.Id); instance.Balance.Should().NotBeNull(); instance.Balance.Currency.Should().Be(Currency.CanadianDollar); instance.Balance.Value.Should().Be(account.Balance.Value); }