Example #1
0
        public void GetFilteredProducts_Returns_FilteredProducts_By_MaxPrice()
        {
            // arrange
            var products = MockData.GetProducts();

            // act
            var result = _subject.GetFilteredProducts(products, 10);

            // assert
            Assert.AreEqual(products.First(p => p.Price == 10), result.First());
        }
Example #2
0
        public void GetFilteredProducts_Returns_All_Products_If_No_Filters_Supplied()
        {
            // arrange
            var products = MockData.GetProducts();

            // act
            var result = _subject.GetFilteredProducts(products);

            // assert
            Assert.AreEqual(products.Count, result.ToList().Count());
        }
Example #3
0
        public void HighlightProducts_Dont_Highlight_If_No_Keywords_Supplied()
        {
            // arrange
            var products = MockData.GetProducts();

            // act
            var result = _subject.HighlightProducts(products);

            // assert
            Assert.AreEqual(0, result.ToList().Where(p => p.Description.Contains("<em>")).Count());
        }
Example #4
0
        public void GetFilteredProducts_Returns_Empty_ProductList_If_Invalid_Filter_Supplied()
        {
            // arrange
            var products   = MockData.GetProducts();
            var mediumSize = "med";

            // act
            var result = _subject.GetFilteredProducts(products, 0, mediumSize);

            // assert
            Assert.AreEqual(0, result.Count());
        }
Example #5
0
        public void HighlightProducts_Highlight_Product_If_Multiple_Keywords_Supplied()
        {
            // arrange
            var products         = MockData.GetProducts();
            var highlightKeyword = "green,red";

            // act
            var result = _subject.HighlightProducts(products, highlightKeyword);

            // assert
            Assert.AreEqual(2, result.ToList().Where(p => p.Description.Contains("<em>")).Count());
        }
Example #6
0
        public void GetFilteredProducts_Returns_FilteredProducts_By_Size()
        {
            // arrange
            var products             = MockData.GetProducts();
            var mediumSize           = "medium";
            var expectedProductCount = products.Count(p => p.Sizes.Contains(mediumSize));

            // act
            var result = _subject.GetFilteredProducts(products, 0, mediumSize);

            // assert
            Assert.AreEqual(expectedProductCount, result.Count());
        }
Example #7
0
        public void GetFilteredProducts_Returns_FilteredProducts_By_MaxPrice_And_Size()
        {
            // arrange
            var products             = MockData.GetProducts();
            var maxPrice             = 12;
            var smallSize            = "small";
            var expectedProductCount = products.Count(p => p.Price <= maxPrice && p.Sizes.Contains(smallSize));

            // act
            var result = _subject.GetFilteredProducts(products, maxPrice, smallSize);

            // assert
            Assert.AreEqual(expectedProductCount, result.Count());
        }
Example #8
0
        public async Task GetFilteredResponse_Returns_Valid_Response_With_AllProducts()
        {
            // arrange
            var products            = MockData.GetProducts();
            var expectedCommonWords = new List <string> {
                "a", "shirt", "blue", "green", "red"
            };

            // act
            var result = await _subject.GetFilteredResponse();

            // assert
            Assert.AreEqual(products.Count(), result.Products.Count());
            Assert.AreEqual(products.Min(p => p.Price), result.MinPrice);
            Assert.AreEqual(products.Max(p => p.Price), result.MaxPrice);
            Assert.AreEqual(products.SelectMany(p => p.Sizes).Distinct(), result.AllSizes);
            Assert.AreEqual(expectedCommonWords, result.CommonWords);
        }
Example #9
0
 public async Task <IEnumerable <Product> > GetProducts()
 {
     return(await Task.FromResult(MockData.GetProducts()));
 }