示例#1
0
        public async Task Test_Transfer_exceeded()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <BankAppDbContext>()
                          .UseInMemoryDatabase(databaseName: "Test_Transfer_exceeded")
                          .Options;


            //Act
            using (var context = new BankAppDbContext(options))
            {
                var senderAccount = new Account
                {
                    Balance = 10,
                };
                var recieverAccount = new Account
                {
                    Balance = 0
                };

                context.AddRange(senderAccount, recieverAccount);
                await context.SaveChangesAsync();

                var x = new CreateTransferCommandHandler(context);
                await x.Handle(new CreateTransferCommand { Amount = 20, SenderAccountId = senderAccount.AccountId, RecieverAccountId = recieverAccount.AccountId }, new CancellationToken());
            }

            //Assert that method throws AmountExceedsBalanceException
        }
        public async Task CreateTransfer_Tests(decimal amount, int fromacc, int toacc)
        {
            var command = new CreateTransferCommand()
            {
                Amount = amount, FromAccountId = fromacc, ToAccountId = toacc
            };
            var options = new DbContextOptionsBuilder <BankAppDataContext>()
                          .UseInMemoryDatabase(databaseName: "CreateTransfer_Tests")
                          .Options;

            using (var context = new BankAppDataContext(options))
            {
                var handler = new CreateTransferCommandHandler(context);
                var result  = await handler.Handle(command, CancellationToken.None);

                Assert.False(result.Success);
            }
        }
示例#3
0
        public async Task Test_Transaction_Created()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <BankAppDbContext>()
                          .UseInMemoryDatabase(databaseName: "Test_Withdraw_exceed")
                          .Options;

            int actual = 0;

            //Act
            using (var context = new BankAppDbContext(options))
            {
                var senderAccount = new Account
                {
                    Balance = 100,
                };
                var recieverAccount = new Account
                {
                    Balance = 0
                };

                context.AddRange(senderAccount, recieverAccount);
                await context.SaveChangesAsync();

                var withdrawCommand = new CreateWithdrawCommandHandler(context);
                await withdrawCommand.Handle(new CreateWithdrawCommand { Amount = 10, AccountId = senderAccount.AccountId }, new CancellationToken());

                var depositCommand = new CreateDepositCommandHandler(context);
                await depositCommand.Handle(new CreateDepositCommand { Amount = 10, AccountId = senderAccount.AccountId }, new CancellationToken());

                var transferCommand = new CreateTransferCommandHandler(context);
                await transferCommand.Handle(new CreateTransferCommand { Amount = 10, SenderAccountId = senderAccount.AccountId, RecieverAccountId = recieverAccount.AccountId }, new CancellationToken());

                actual = await context.Transactions.CountAsync();
            }

            //Assert that method creates 4 transfers
            int expected = 4;

            Assert.AreEqual(expected, actual);
        }