示例#1
0
        public async Task AccountsExist_ListWithAllAccountIsReturned()
        {
            // arrange
            var            mockApplicationDbContext = new Mock <IApplicationDbContext>();
            List <Account> accounts = new List <Account>()
            {
                new()
                {
                    AccountNumber = "ABC123"
                },
                new()
                {
                    AccountNumber = "DEF123"
                }
            };
            var stubListOfEntities = new StubListOfEntities <Account>(accounts);

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubListOfEntities);

            var sut = new GetAccountsQueryHandler(mockApplicationDbContext.Object);

            // act
            var result = await sut.Handle(new GetAccountsQuery(), CancellationToken.None);

            // assert
            result.Accounts.Should().NotBeEmpty();
            result.Accounts
            .All(i => accounts.Any(a => i.AccountNumber.Equals(a.AccountNumber)))
            .Should()
            .BeTrue();
        }
    }
示例#2
0
        public void EmptyValueIsPassed_ValidationFailedWithExpectedErrorIsReturned()
        {
            // arrange
            var     mockApplicationDbContext = new Mock <IApplicationDbContext>();
            Account account = new()
            {
                AccountNumber = "ABC123",
                Currency      = Currency.EUR
            };
            List <Account> accounts = new List <Account>()
            {
                account,
                new()
                {
                    AccountNumber = "DEF123"
                }
            };

            var stubAccounts = new StubListOfEntities <Account>(accounts);

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubAccounts);
            var sut = new GetTransactionQueryValidator(mockApplicationDbContext.Object);

            // act
            var instanceToValidate = new GetTransactionsQuery();
            var validationResult   = sut.Validate(instanceToValidate);

            // assert
            validationResult.IsValid.Should().BeFalse();
            validationResult.Errors.Any(e => e.ErrorMessage == "Account Number is required.").Should().BeTrue();
        }
示例#3
0
        public async Task TransactionExistForSpecifiedAccountButAreTooOld_ReturnEmptyList()
        {
            // arrange
            var mockDateTime = new Mock <IDateTime>();
            var systemTime   = DateTime.UtcNow;

            mockDateTime
            .Setup(m => m.Now)
            .Returns(systemTime);
            var            mockApplicationDbContext = new Mock <IApplicationDbContext>();
            var            accountNumber            = "ABC123";
            List <Account> accounts = new List <Account>()
            {
                new()
                {
                    AccountNumber = accountNumber
                },
                new()
                {
                    AccountNumber = "DEF123"
                }
            };

            var stubAccounts = new StubListOfEntities <Account>(accounts);

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubAccounts);
            var transactionDateNotOldThenOneMonth = systemTime.AddMonths(-2);
            var transactions = new List <Transaction>()
            {
                new()
                {
                    AccountNumber   = accountNumber,
                    TransactionDate = transactionDateNotOldThenOneMonth
                }
            };
            var stubTransactions = new StubListOfEntities <Transaction>(transactions);

            mockApplicationDbContext
            .Setup(m => m.Transactions)
            .Returns(stubTransactions);


            var sut = new GetTransactionsQueryHandler(mockApplicationDbContext.Object, mockDateTime.Object);

            // act
            var result = await sut.Handle(new GetTransactionsQuery()
            {
                AccountNumber = accountNumber
            }, CancellationToken.None);

            // assert
            result.Should().BeEmpty();
        }
示例#4
0
        public async Task AccountsNotExist_ReturnEmptyList()
        {
            // arrange
            var mockApplicationDbContext = new Mock <IApplicationDbContext>();
            var stubListOfEntities       = new StubListOfEntities <Account>(new List <Account>());

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubListOfEntities);

            var sut = new GetAccountsQueryHandler(mockApplicationDbContext.Object);

            // act
            var result = await sut.Handle(new GetAccountsQuery(), CancellationToken.None);

            // assert
            result.Accounts.Should().BeEmpty();
        }
示例#5
0
        public void PassValidAccountNumber_ValidationSucceded()
        {
            // arrange
            var     mockApplicationDbContext = new Mock <IApplicationDbContext>();
            var     accountNumber            = "ABC123";
            Account account = new()
            {
                AccountNumber = accountNumber,
                Currency      = Currency.EUR
            };
            List <Account> accounts = new List <Account>()
            {
                account,
                new()
                {
                    AccountNumber = "DEF123"
                }
            };

            var stubAccounts = new StubListOfEntities <Account>(accounts);

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubAccounts);
            var sut = new GetTransactionQueryValidator(mockApplicationDbContext.Object);

            // act
            var instanceToValidate = new GetTransactionsQuery()
            {
                AccountNumber = accountNumber
            };
            var validationResult = sut.Validate(instanceToValidate);

            // assert
            validationResult.IsValid.Should().BeTrue();
        }
    }
}
示例#6
0
        public async Task MoreTransactionWithSameCategoryExistForSpecifiedAccount_OneItemWithTotalAmmountIsReturned()
        {
            // arrange
            var mockDateTime = new Mock <IDateTime>();
            var systemTime   = DateTime.UtcNow;

            mockDateTime
            .Setup(m => m.Now)
            .Returns(systemTime);
            var     mockApplicationDbContext = new Mock <IApplicationDbContext>();
            Account account = new()
            {
                AccountNumber = "ABC123",
                Currency      = Currency.EUR
            };
            List <Account> accounts = new List <Account>()
            {
                account,
                new()
                {
                    AccountNumber = "DEF123"
                }
            };

            var stubAccounts = new StubListOfEntities <Account>(accounts);

            mockApplicationDbContext
            .Setup(m => m.Accounts)
            .Returns(stubAccounts);
            var transactionDateNotOldThenOneMonth = systemTime.AddHours(-2);
            var transactions = new List <Transaction>()
            {
                new()
                {
                    AccountNumber   = account.AccountNumber,
                    TransactionDate = transactionDateNotOldThenOneMonth,
                    Amount          = 200,
                    CategoryId      = (int)TransactionCategory.Entertainment,
                    TransactionId   = 10
                },
                new()
                {
                    AccountNumber   = account.AccountNumber,
                    TransactionDate = transactionDateNotOldThenOneMonth,
                    Amount          = 300,
                    CategoryId      = (int)TransactionCategory.Entertainment,
                    TransactionId   = 11
                }
            };
            var stubTransactions = new StubListOfEntities <Transaction>(transactions);

            mockApplicationDbContext
            .Setup(m => m.Transactions)
            .Returns(stubTransactions);


            var sut = new GetTransactionsQueryHandler(mockApplicationDbContext.Object, mockDateTime.Object);

            // act
            var result = await sut.Handle(new GetTransactionsQuery()
            {
                AccountNumber = account.AccountNumber
            }, CancellationToken.None);

            // assert
            result.Should().NotBeNullOrEmpty();
            result.Count.Should().Be(1);
            result.Any(a => a.CategoryName == TransactionCategory.Entertainment.ToString()).Should().BeTrue();
            result.Any(a => a.TotalAmount == 500).Should().BeTrue();
        }
    }
}