Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }