public void ReturnsProducts_OrderedByRecommended_WithDefinedPopularity() { // Arrange var productPopularityA = new ProductPopularity() { ProductName = productAName, PopularityRank = 2 }; var productPopularityB = new ProductPopularity() { ProductName = productBName, PopularityRank = 0 }; var productPopularityC = new ProductPopularity() { ProductName = productCName, PopularityRank = 1 }; _mockedProductPopularityService.Setup(s => s.GetProductPopularityAsync()) .ReturnsAsync(new List <ProductPopularity>() { productPopularityA, productPopularityB, productPopularityC }); // Act var result = _target.OrderProductsAsync(_products, Domain.Enums.SortOption.Recommended).Result.ToList(); // Assert Assert.IsTrue(result.First().Name == productBName); Assert.IsTrue(result.Last().Name == productAName); }
public List <ProductPopularity> GetProductPopularity() { slytherBangConnection.Open(); try { var getProductsCommand = slytherBangConnection.CreateCommand(); getProductsCommand.CommandText = @"SELECT distinct Top 10 ProductName, COUNT(distinct CartDetailId) as Orders, COUNT(distinct CustomerId) as Customers, CONVERT(decimal(10,2), SUM(Qty * ProductPrice)) as Revenue FROM SlytherBang.dbo.Cart c JOIN SlytherBang.dbo.CartDetail cc ON c.CartId = cc.CartId JOIN SlytherBang.dbo.Product p ON cc.ProductId = p.ProductId GROUP BY ProductName ORDER BY COUNT(distinct CartDetailId) desc; "; var listedPopularity = new List <ProductPopularity>(); var reader = getProductsCommand.ExecuteReader(); while (reader.Read()) { var product = new ProductPopularity { ProductName = reader.GetString(0), Orders = reader.GetInt32(1), Customers = reader.GetInt32(2), Revenue = reader.GetDecimal(3) }; listedPopularity.Add(product); } return(listedPopularity); } catch (SqlException ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); } finally { slytherBangConnection.Close(); } return(new List <ProductPopularity>()); }