Ejemplo n.º 1
0
            GivenInputParameters_ThenTransactionServiceCalledWithCorrectArguments()
            {
                var expectedType = TransactionType.Expense;
                var start        = DateTime.MinValue;
                var end          = DateTime.MaxValue;

                _mockTransactionService
                .Setup(helperService =>
                       helperService.GetTransactionsAsync(It.IsAny <GetTransactionsQuery>())).ReturnsAsync(() =>
                                                                                                           new List <Transaction>
                {
                    new Transaction
                    {
                        Amount               = 123M,
                        Category             = "category",
                        TransactionTimestamp = DateTime.Now.ToString("O"),
                        Subcategory          = "subcategory-1",
                        TransactionId        = "transaction-id-1",
                        TransactionType      = "expense",
                    }
                });

                var service = new AnalyticsService(_mockTransactionService.Object, _mockTimePeriodHelper.Object);
                await service.GetCategoriesBreakdown(expectedType, null, start, end);

                _mockTransactionService.Verify(transactionService => transactionService.GetTransactionsAsync(
                                                   It.Is <GetTransactionsQuery>(query =>
                                                                                query.Start == start && query.End == end && query.Type == expectedType &&
                                                                                !query.Subcategories.Any() && !query.Categories.Any())
                                                   ));
            }
Ejemplo n.º 2
0
            GivenNullCountAndListReturnedFromTransactionService_ThenCorrectAnalyticsCategoryListReturned()
            {
                var expectedType = TransactionType.Expense;
                var start        = DateTime.MinValue;
                var end          = DateTime.MaxValue;
                var timePeriod   = new TimePeriod("MONTH", 5);
                var dateRange    = new DateRange(start, end);

                const string  expectedCategory1             = "category1";
                const int     numberOfCategory1Transactions = 24;
                const decimal category1TransactionsAmount   = (decimal)34.5;

                const string  expectedCategory2             = "category2";
                const int     numberOfCategory2Transactions = 20;
                const decimal category2TransactionsAmount   = (decimal)34.5;

                const string  expectedCategory3             = "category3";
                const int     numberOfCategory3Transactions = 10;
                const decimal category3TransactionsAmount   = (decimal)34.5;

                var transactionList = new TransactionListBuilder("userId123")
                                      .WithNumberOfTransactionsOfCategoryAndAmount(numberOfCategory1Transactions, expectedCategory1,
                                                                                   category1TransactionsAmount)
                                      .WithNumberOfTransactionsOfCategoryAndAmount(numberOfCategory2Transactions, expectedCategory2,
                                                                                   category2TransactionsAmount)
                                      .WithNumberOfTransactionsOfCategoryAndAmount(numberOfCategory3Transactions, expectedCategory3,
                                                                                   category3TransactionsAmount)
                                      .Build();

                _mockTimePeriodHelper.Setup(helper => helper.ResolveDateRange(timePeriod)).Returns(dateRange);

                _mockTransactionService
                .Setup(helperService =>
                       helperService.GetTransactionsAsync(It.IsAny <GetTransactionsQuery>()))
                .ReturnsAsync(() => transactionList);

                var service             = new AnalyticsService(_mockTransactionService.Object, _mockTimePeriodHelper.Object);
                var analyticsCategories = await service.GetCategoriesBreakdown(expectedType, null, timePeriod);

                var expectedAnalyticsCategories = new List <AnalyticsCategory>
                {
                    new()
                    {
                        CategoryName = expectedCategory1,
                        TotalAmount  = numberOfCategory1Transactions * category1TransactionsAmount
                    },
                    new()
                    {
                        CategoryName = expectedCategory2,
                        TotalAmount  = numberOfCategory2Transactions * category2TransactionsAmount
                    },
                    new()
                    {
                        CategoryName = expectedCategory3,
                        TotalAmount  = numberOfCategory3Transactions * category3TransactionsAmount
                    }
                };

                Assert.Equal(expectedAnalyticsCategories, analyticsCategories);
            }