public async Task GetRevenueReportBySellerAsync_ShouldReturnResult() { // Arrange var reportService = TestableReportService.Create(); var testOrders = CreateTestOrders(); var sellerId = testOrders[1].CreatedById; var mockOrders = testOrders.AsQueryable().BuildMock(); var mockAppSettings = CreateAppSettings().AsQueryable().BuildMock(); reportService.MockOrderRepo.Setup(repo => repo.QueryAsNoTracking()).Returns(mockOrders.Object); reportService.MockAppSettingRepo.Setup(repo => repo.QueryAsNoTracking()).Returns(mockAppSettings.Object); // Action var report = await reportService.GetRevenueReportBySellerAsync(DateTime.Now, sellerId); // Assert Assert.NotNull(report); var subTotal = testOrders.Where(order => order.CreatedById == sellerId).Sum(order => order.SubTotal); Assert.Equal(subTotal, report.SubTotals[0]); Assert.Empty(report.Totals); Assert.Empty(report.Costs); Assert.Empty(report.Profits); }
public async Task GetRevenueReportAsync_ShouldReturnResult_ForAllSellers() { // Arrange var reportService = TestableReportService.Create(); var testOrders = CreateTestOrders(); var mockOrders = testOrders.AsQueryable().BuildMock(); var mockAppSettings = CreateAppSettings().AsQueryable().BuildMock(); reportService.MockOrderRepo.Setup(repo => repo.QueryAsNoTracking()).Returns(mockOrders.Object); reportService.MockAppSettingRepo.Setup(repo => repo.QueryAsNoTracking()).Returns(mockAppSettings.Object); // Action var report = await reportService.GetRevenueReportAsync(DateTime.Now, null); // Assert Assert.NotNull(report); var subTotal = testOrders.Sum(order => order.SubTotal); var total = testOrders.Sum(order => order.OrderTotal); var cost = testOrders.Sum(order => order.OrderTotalCost); var profit = total - cost; Assert.Equal(subTotal, report.SubTotals[0]); Assert.Equal(total, report.Totals[0]); Assert.Equal(cost, report.Costs[0]); Assert.Equal(profit, report.Profits[0]); }