Exemplo n.º 1
0
        public IActionResult Withdraw(WithdrawViewModel model)
        {
            if (ModelState.IsValid)
            {
                var command = new WithdrawCommand
                {
                    AccountId = model.AccountId,
                    Amount    = model.Amount,
                };

                var query = new WithdrawHandler(new BankContext()).Handler(command);

                if (query.IsCompletedSuccessfully)
                {
                    TempData["Success"] = $"{model.Amount.ToString("C")} withdrawn from account";
                    return(View());
                }
                else
                {
                    TempData["Error"] = $"Withdraw failed";
                    return(View());
                }
            }
            return(View());
        }
Exemplo n.º 2
0
        public void Withdraw_Overdraft()
        {
            var options = new DbContextOptionsBuilder <BankContext>()
                          .UseInMemoryDatabase(databaseName: "NegativeAmount")
                          .Options;

            using (var context = new BankContext(options))
            {
                var account = new Account
                {
                    AccountId = 2,
                    Frequency = "Daily",
                    Balance   = 500
                };

                context.Accounts.Add(account);
                context.SaveChanges();
            }

            using (var context = new BankContext(options))
            {
                var command = new WithdrawCommand {
                    AccountId = 2, Amount = 1000
                };
                var handler = new WithdrawHandler(context);

                Assert.ThrowsAsync <InsufficientFundsException>(() => handler.Handler(command));
            }
        }
Exemplo n.º 3
0
        public void Deposit_NegativeAmount()
        {
            var options = new DbContextOptionsBuilder <BankContext>()
                          .UseInMemoryDatabase(databaseName: "NegativeAmount")
                          .Options;

            using (var context = new BankContext(options))
            {
                var account = new Account
                {
                    AccountId = 3,
                    Frequency = "Daily"
                };

                context.Accounts.Add(account);
                context.SaveChanges();
            }

            using (var context = new BankContext(options))
            {
                var command = new WithdrawCommand()
                {
                    AccountId = 3, Amount = -50
                };
                var handler = new WithdrawHandler(context);

                Assert.ThrowsAsync <NegativeAmountException>(() => handler.Handler(command));
            }
        }
Exemplo n.º 4
0
        public void Withdraw_NegativeAmount()
        {
            var options = new DbContextOptionsBuilder <BankContext>()
                          .UseInMemoryDatabase(databaseName: "NegativeAmount")
                          .Options;

            using (var context = new BankContext(options))
            {
                var command = new WithdrawCommand()
                {
                    AccountId = 1, Amount = -50
                };
                var handler = new WithdrawHandler(context);

                Assert.ThrowsAsync <NegativeAmountException>(() => handler.Handler(command));
            }
        }