Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
            }
        }