public async Task GetDailyRevenueByArticleForDay_Error(string year, string month, string day) { var targetDay = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day)); DailyArticleRevenue result = await Client.GetRevenueByArticle(targetDay); Assert.Null(result); }
public async Task AddNewSaleAndGettingRevenue_Success() { var day1 = new DateTime(2021, 4, 10, 16, 30, 00); var day2 = new DateTime(2021, 4, 11, 16, 30, 00); var article = new Article(Guid.NewGuid().ToString("N"), 12.50, day1, "Pizza"); await Client.AddArticleSale(article); article.SellTime = new DateTime(2021, 4, 10, 17, 30, 00); await Client.AddArticleSale(article); article.SellTime = day2; await Client.AddArticleSale(article); article.SellTime = new DateTime(2021, 4, 11, 17, 30, 00); await Client.AddArticleSale(article); ArticleRevenue totalRevenueForPizza = (await Client.GetTotalRevenueByArticle()).Single(x => x.Name.Equals("Pizza")); Assert.Equal(12.50 * 5, totalRevenueForPizza.Amount); DailyArticleRevenue revenueForPizzaDay1 = await Client.GetRevenueByArticle(day1); DailyArticleRevenue revenueForPizzaDay2 = await Client.GetRevenueByArticle(day2); Assert.Equal(12.50 * 3, revenueForPizzaDay1.Revenues.Single(x => x.Name.Equals("Pizza")).Amount); Assert.Equal(12.50 * 2, revenueForPizzaDay2.Revenues.Single(x => x.Name.Equals("Pizza")).Amount); }
public async Task <ActionResult <DailyArticleRevenue> > GetRevenueByArticle(DateTime targetDay) { AsyncLogger.Log(LogLevel.Info, $"Operation: {nameof(GetRevenueByArticle)}. Input: {targetDay:s}"); DailyArticleRevenue result = (await _dataStore.GetRevenuesByArticle(targetDay.Date, targetDay.Date)).SingleOrDefault(); if (result == null) { AsyncLogger.Log(LogLevel.Warning, $"{nameof(GetRevenueByArticle)} returned no values"); return(NoContent()); } return(Ok(result)); }
public async Task GetDailyRevenueByArticleForDay_Success(string year, string month, string day) { var targetDay = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day)); DailyArticleRevenue result = (await Client.GetRevenueByArticle(targetDay)); List <ArticleRevenue> salesForCurrentDay = SalesDataProvider.SalesData .Where(x => x.SellTime.Day == result.SaleDay.Day) .GroupBy(x => x.Name) .Select(x => new ArticleRevenue(x.Key, x.Sum(y => y.Price))) .ToList(); List <ArticleRevenue> resultSalesForCurrentDay = result.Revenues.ToList(); Assert.Equal(salesForCurrentDay.Count, resultSalesForCurrentDay.Count); salesForCurrentDay.Sort((x1, x2) => string.Compare(x1.Name, x2.Name, StringComparison.Ordinal)); resultSalesForCurrentDay.Sort((x1, x2) => string.Compare(x1.Name, x2.Name, StringComparison.Ordinal)); for (var i = 0; i < salesForCurrentDay.Count; i++) { Assert.Equal(salesForCurrentDay[i].Amount, resultSalesForCurrentDay[i].Amount); } }