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(); } }
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(); }
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(); }
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(); }
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(); } } }
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(); } } }