public void GetWhereCondition_SetupFullFilter_ReturnsCorrectWhereCondition()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            filter.Manufacturers[0].IsChecked = true;
            filter.Manufacturers[1].IsChecked = true;

            filter.Prices[0].IsChecked = true;
            filter.Prices[1].IsChecked = true;

            filter.Type[0].IsChecked = true;
            filter.Type[1].IsChecked = false;

            var where = filter.GetWhereCondition();

            Assert.Multiple(() =>
            {
                Assert.IsNotNull(where);
                Assert.AreEqual("[SKUManufacturerID] IN (1, 2) AND (([SKUPrice] >= 0 AND [SKUPrice] < 50) OR ([SKUPrice] >= 50 AND [SKUPrice] < 500)) " +
                                $"AND [ClassName] = N'{ElectricGrinder.CLASS_NAME}'", where.ToString(true));
            }
                            );
        }
        public void GetWhereCondition_SetupType_CorrectRestrictionInWhereCondition(string className)
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            if (className.Equals(ElectricGrinder.CLASS_NAME))
            {
                filter.Type[0].IsChecked = true;
            }

            if (className.Equals(ManualGrinder.CLASS_NAME))
            {
                filter.Type[1].IsChecked = true;
            }

            var where = filter.GetWhereCondition();

            Assert.Multiple(() =>
            {
                Assert.IsNotNull(where);
                Assert.AreEqual($"[ClassName] = N'{className}'", where.ToString(true));
            }
                            );
        }
Ejemplo n.º 3
0
        public ActionResult Filter(GrinderFilterViewModel filter)
        {
            if (!Request.IsAjaxRequest())
            {
                return(HttpNotFound());
            }

            var items = GetFilteredGrinders(filter);

            return(PartialView("GrindersList", items));
        }
Ejemplo n.º 4
0
        private IEnumerable <ProductListItemViewModel> GetFilteredGrinders(GrinderFilterViewModel filter)
        {
            var grinders = productRepository.GetProducts(filter, grinderClasses);

            var items = grinders.Select(
                grinder => new ProductListItemViewModel(
                    grinder,
                    calculationService.CalculatePrice(grinder.SKU),
                    GetProductStatus(grinder),
                    pageUrlRetriever)
                );

            return(items);
        }
Ejemplo n.º 5
0
        // GET: Grinder
        public ActionResult Index()
        {
            var items  = GetFilteredGrinders(null);
            var filter = new GrinderFilterViewModel(productRepository);

            filter.Load();

            var model = new ProductListViewModel
            {
                Filter = filter,
                Items  = items
            };

            return(View(model));
        }
        public void GetWhereCondition_EmptyViewModel_EmptyWhereCondition()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            var where = filter.GetWhereCondition();

            Assert.Multiple(() =>
            {
                Assert.IsNotNull(where);
                Assert.IsEmpty(where.ToString(true));
            }
                            );
        }
        public void Load_FilterContainsCorrectTypes()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            var status1 = filter.Type.FirstOrDefault(checkbox => checkbox.Value == 0);
            var status2 = filter.Type.FirstOrDefault(checkbox => checkbox.Value == 1);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(2, filter.Type.Count);
                Assert.IsNotNull(status1);
                Assert.IsNotNull(status2);
            }
                            );
        }
        public void Load_FilterContainsCorrectManufacturers()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            var manufacturer1 = filter.Manufacturers.FirstOrDefault(checkbox => checkbox.Value == 1);
            var manufacturer2 = filter.Manufacturers.FirstOrDefault(checkbox => checkbox.Value == 2);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(2, filter.Manufacturers.Count);
                Assert.IsNotNull(manufacturer1);
                Assert.IsNotNull(manufacturer2);
            }
                            );
        }
        public void GetWhereCondition_SetupManufacturers_CorrectRestrictionInWhereCondition()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            filter.Manufacturers[0].IsChecked = true;
            filter.Manufacturers[1].IsChecked = true;

            var where = filter.GetWhereCondition();

            Assert.Multiple(() =>
            {
                Assert.IsNotNull(where);
                Assert.AreEqual("[SKUManufacturerID] IN (1, 2)", where.ToString(true));
            }
                            );
        }
        public void GetWhereCondition_SetupPrice_CorrectRestrictionInWhereCondition()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            filter.Prices[0].IsChecked = true;
            filter.Prices[1].IsChecked = false;
            filter.Prices[2].IsChecked = true;

            var where = filter.GetWhereCondition();

            Assert.Multiple(() =>
            {
                Assert.IsNotNull(where);
                Assert.AreEqual("(([SKUPrice] >= 0 AND [SKUPrice] < 50) OR ([SKUPrice] >= 500 AND [SKUPrice] < 5000))", where.ToString(true));
            }
                            );
        }
Ejemplo n.º 11
0
        private IProductRepository MockDataSource(SKUInfo skuInfo)
        {
            Fake().DocumentType <ManualGrinder>(ManualGrinder.CLASS_NAME);
            Fake().DocumentType <ElectricGrinder>(ElectricGrinder.CLASS_NAME);

            var grinder1 = TreeNode.New <ManualGrinder>().With(x =>
            {
                x.DocumentName = GRINDER_TITLE1;
                x.SKU          = skuInfo;
            });

            var grinder2 = TreeNode.New <ElectricGrinder>().With(x =>
            {
                x.DocumentName = GRINDER_TITLE2;
                x.SKU          = skuInfo;
            });

            var repository     = Substitute.For <IProductRepository>();
            var grinderClasses = new[] { ManualGrinder.CLASS_NAME, ElectricGrinder.CLASS_NAME };

            filter = Substitute.For <GrinderFilterViewModel>();
            repository.GetProducts(filter, Arg.Is <string[]>(collection => collection.SequenceEqual(grinderClasses)))
            .Returns(new List <SKUTreeNode> {
                grinder1, grinder2
            });

            filter2 = Substitute.For <GrinderFilterViewModel>();
            repository.GetProducts(filter2, Arg.Is <string[]>(collection => collection.SequenceEqual(grinderClasses)))
            .Returns(new List <SKUTreeNode> {
                grinder2
            });

            filter3 = Substitute.For <GrinderFilterViewModel>();
            repository.GetProducts(filter3, Arg.Is <string[]>(collection => collection.SequenceEqual(grinderClasses)))
            .Returns(new List <SKUTreeNode>());

            return(repository);
        }
        public void Load_FilterContainsCorrectPrices()
        {
            var filter = new GrinderFilterViewModel(repository);

            filter.Load();

            var toFifty = filter.Prices.FirstOrDefault(checkbox =>
                                                       (int)GrinderPriceRangeEnum.ToFifty == checkbox.Value);

            var fromTwoHundredFiftyToFiveThousand = filter.Prices.FirstOrDefault(checkbox =>
                                                                                 (int)GrinderPriceRangeEnum.FromFiveHundredToFiveThousand == checkbox.Value);

            var fromFiftyToTwoHundredFifty = filter.Prices.FirstOrDefault(checkbox =>
                                                                          (int)GrinderPriceRangeEnum.FromFiftyToFiveHundred == checkbox.Value);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(3, filter.Prices.Count);
                Assert.IsNotNull(toFifty);
                Assert.IsNotNull(fromTwoHundredFiftyToFiveThousand);
                Assert.IsNotNull(fromFiftyToTwoHundredFifty);
            }
                            );
        }