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)); } ); }
public ActionResult Filter(GrinderFilterViewModel filter) { if (!Request.IsAjaxRequest()) { return(HttpNotFound()); } var items = GetFilteredGrinders(filter); return(PartialView("GrindersList", items)); }
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); }
// 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)); } ); }
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); } ); }