public void CopyCtor_withAdSearchModel() { // Given AdSearchModel searchModel = new AdSearchModel { SearchString = "toto", CitySelectedId = 12, CategorySelectedId = 7, CategorySelectedLabel = "Véhicules", CategoryImagePath = "thepath" }; Category cat = new Category { Id = 16, Label = "Voitures", ImageName = "car.png" }; // When searchModel.SetCategory(cat); // Then Assert.AreEqual(16, searchModel.CategorySelectedId); Assert.AreEqual("Voitures", searchModel.CategorySelectedLabel); Assert.AreEqual("car.png", searchModel.CategoryImagePath); }
public void CopyCtor_withAdSearchModel() { // Given AdSearchModel searchModel = new AdSearchModel { SearchString = "toto", CitySelectedId = 12, CategorySelectedId = 7, CategorySelectedLabel = "Véhicules", CategoryImagePath = "thepath" }; Category cat = new Category { Id = 16, Label = "Voitures", ImageName = "car.png" }; // When searchModel.SetCategory(cat); // Then Assert.AreEqual(16, searchModel.CategorySelectedId); Assert.AreEqual("Voitures", searchModel.CategorySelectedLabel); Assert.AreEqual("car.png", searchModel.CategoryImagePath); }
public AdSearchResultModel SearchAdsFromUrl(string cityLabel, string categoryLabel) { AdSearchModel model = new AdSearchModel(); if (!String.IsNullOrEmpty(categoryLabel)) { Category c = _categoryRepository.GetCategoryFromUrlPart(categoryLabel); if (c != null) { model.CategorySelectedId = c.Id; model.CategorySelectedLabel = c.Label; model.CategoryImagePath = c.ImageName; } } if (!String.IsNullOrEmpty(cityLabel)) { City city = _locationServices.GetCityFromLabelUrlPart(cityLabel); if (city != null) { model.CitySelectedId = city.Id; } } return(LightSearchAds(model)); }
public void AdvancedSearchAds_SearchThroughAds_CallSearchRepoOnAds() { // Given Category cat = new Category { Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.Ad }; AdSearchModel model = new AdSearchModel(); model.CategorySelectedId = 1; model.SearchString = "toto"; model.CitySelectedId = 12; IList<SearchAdCache> searchResult = new List<SearchAdCache>(); searchResult.Add(new SearchAdCache { Title = "ship", City = new City() { Label = "the city" }, Category = cat }); var repoMock = new Moq.Mock<IRepository>(); repoMock.Setup(r => r.Get<Category>(cat.Id)).Returns(cat); var searchRepoMock = new Moq.Mock<ISearchRepository>(); searchRepoMock.Setup(r => r.SearchAds(It.Is<String[]>(x => x[0] == "toto"), 12, It.Is<int[]>(x => x[0] == 1))).Returns(searchResult); SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, null, null, null); // When AdSearchResultModel result = service.LightSearchAds(model); // Then Assert.AreEqual(1, result.SearchResultTotalCount); }
// // GET: /Search/QuickSearch/ public ActionResult QuickSearch(AdSearchModel model) { ViewBag.Categories = _categoryServices.GetAllCategoriesOfAGroup(model.CategorySelectedId) .Select(x => new SelectListItem { Text = x.Label, Value = x.Id.ToString() }); AdHomeSearchResultModel result = _searchServices.QuickSearch(model); return(View(result)); }
public void AdHomeSearchResultModel_ctor_callparentctor() { // Given AdSearchModel sM = new AdSearchModel(); sM.SearchString = "prout"; // When AdHomeSearchResultModel result = new AdHomeSearchResultModel(sM); // Then Assert.AreEqual(0, result.Results.Count); Assert.AreEqual("prout", result.SearchString); }
public AdHomeSearchResultModel QuickSearch(AdSearchModel searchQuery) { String[] andSearchStrings = null; if (!String.IsNullOrEmpty(searchQuery.SearchString)) { andSearchStrings = searchQuery.SearchString.Trim().Split(' '); } IDictionary <Category, int> searchResult = _searchRepository.CountByCategory(andSearchStrings, searchQuery.CitySelectedId); AdHomeSearchResultModel result = new AdHomeSearchResultModel(searchQuery); IList <Category> processedParentCategories = new List <Category>(); // Loop through all the parent categories foreach (KeyValuePair <Category, int> r in searchResult) { Category parentCategory = r.Key.ParentCategory; if (processedParentCategories.Contains(parentCategory)) { continue; } processedParentCategories.Add(parentCategory); AdHomeSearchResultItemModel m = new AdHomeSearchResultItemModel(parentCategory); result.Results.Add(m); foreach (Category c in parentCategory.SubCategories) { if (!searchResult.ContainsKey(c)) { continue; } AdHomeSearchResultItemModel r1 = new AdHomeSearchResultItemModel(c); r1.ResultCount = searchResult[c]; m.ResultCount += r1.ResultCount; m.SubCategoriesResults.Add(r1); } result.SearchResultTotalCount += m.ResultCount; } return(result); }
public AdSearchResultModel SearchAds(AdSearchModel searchQuery) { // If this is a broad search, redirect to the base search through all ads if (!searchQuery.CategorySelectedId.HasValue) { return(LightSearchAds(searchQuery)); } Category selectedCategory = _repository.Get <Category>(searchQuery.CategorySelectedId); searchQuery.SetCategory(selectedCategory); // If this is a group category search, redirect to the base search through all this group ads if (selectedCategory.SubCategories.Count != 0) { return(LightSearchAds(searchQuery)); } return(AdvancedSearchAds(searchQuery as AdvancedAdSearchModel)); }
public void AdvancedSearchAds_SearchThroughAds_CallSearchRepoOnAds() { // Given Category cat = new Category { Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.Ad }; AdSearchModel model = new AdSearchModel(); model.CategorySelectedId = 1; model.SearchString = "toto"; model.CitySelectedId = 12; IList <SearchAdCache> searchResult = new List <SearchAdCache>(); searchResult.Add(new SearchAdCache { Title = "ship", City = new City() { Label = "the city" }, Category = cat }); var repoMock = new Moq.Mock <IRepository>(); repoMock.Setup(r => r.Get <Category>(cat.Id)).Returns(cat); var searchRepoMock = new Moq.Mock <ISearchRepository>(); searchRepoMock.Setup(r => r.SearchAds(It.Is <String[]>(x => x[0] == "toto"), 12, It.Is <int[]>(x => x[0] == 1))).Returns(searchResult); SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, null, null, null); // When AdSearchResultModel result = service.LightSearchAds(model); // Then Assert.AreEqual(1, result.SearchResultTotalCount); }
public AdHomeSearchResultModel QuickSearch(AdSearchModel searchQuery) { String[] andSearchStrings = null; if (!String.IsNullOrEmpty(searchQuery.SearchString)) andSearchStrings = searchQuery.SearchString.Trim().Split(' '); IDictionary<Category, int> searchResult = _searchRepository.CountByCategory(andSearchStrings, searchQuery.CitySelectedId); AdHomeSearchResultModel result = new AdHomeSearchResultModel(searchQuery); IList<Category> processedParentCategories = new List<Category>(); // Loop through all the parent categories foreach (KeyValuePair<Category, int> r in searchResult) { Category parentCategory = r.Key.ParentCategory; if (processedParentCategories.Contains(parentCategory)) continue; processedParentCategories.Add(parentCategory); AdHomeSearchResultItemModel m = new AdHomeSearchResultItemModel(parentCategory); result.Results.Add(m); foreach (Category c in parentCategory.SubCategories) { if (!searchResult.ContainsKey(c)) continue; AdHomeSearchResultItemModel r1 = new AdHomeSearchResultItemModel(c); r1.ResultCount = searchResult[c]; m.ResultCount += r1.ResultCount; m.SubCategoriesResults.Add(r1); } result.SearchResultTotalCount += m.ResultCount; } return result; }
public void AdSearchModel_SetCategory() { // Given AdSearchModel searchModel = new AdSearchModel { SearchString = "toto", CitySelectedId = 12, CategorySelectedId = 7, CategorySelectedLabel = "Véhicules", CategoryImagePath = "thepath" }; // When AdSearchModel instance = new AdSearchModel(searchModel); // Then Assert.AreEqual(searchModel.SearchString, instance.SearchString); Assert.AreEqual(searchModel.CitySelectedId, instance.CitySelectedId); Assert.AreEqual(searchModel.CategorySelectedLabel, instance.CategorySelectedLabel); Assert.AreEqual(searchModel.CategorySelectedId, instance.CategorySelectedId); Assert.AreEqual(searchModel.CategoryImagePath, instance.CategoryImagePath); }
internal AdSearchResultModel LightSearchAds(AdSearchModel searchQuery) { String[] andSearchStrings = null; if (!String.IsNullOrEmpty(searchQuery.SearchString)) { andSearchStrings = searchQuery.SearchString.Trim().Split(' '); } int[] categories = GetCategoryIdsFromQuery(searchQuery.CategorySelectedId); Dictionary <String, String> searchParams = new Dictionary <String, String>(); IList <SearchAdCache> searchResult = _searchRepository.SearchAds(andSearchStrings, searchQuery.CitySelectedId, categories); AdSearchResultModel model = new AdSearchResultModel(searchQuery); model.SearchResultTotalCount = searchResult.Count; model.SearchResult = searchResult.Select(a => new AdSearchResultItemModel(a)).ToList(); return(model); }
public void QuickSearch_Test() { // Given AdSearchModel sM = new AdSearchModel(); sM.SearchString = "verre"; sM.CitySelectedId = 45; Category c1 = new Category { Label = "Vehicule", }; Category c2 = new Category { Label = "Voiture", }; c1.AddCategory(c2); Category c3 = new Category { Label = "Moto", }; c1.AddCategory(c3); Category c4 = new Category { Label = "Maison", }; Category c5 = new Category { Label = "Meuble", }; c4.AddCategory(c5); Category c6 = new Category { Label = "Vaisselle", }; c4.AddCategory(c6); IDictionary <Category, int> res = new Dictionary <Category, int>(); res.Add(c2, 2); res.Add(c3, 1); res.Add(c6, 6); var searchRepoMock = new Moq.Mock <ISearchRepository>(); searchRepoMock.Setup(x => x.CountByCategory(It.Is <string[]>(b => b[0] == sM.SearchString), It.Is <int?>(i => i.Value == sM.CitySelectedId))) .Returns(res); SearchServices service = new SearchServices(null, null, searchRepoMock.Object, null, null, null); // When AdHomeSearchResultModel ress = service.QuickSearch(sM); // Then Assert.AreEqual(sM.CitySelectedId, ress.CitySelectedId); Assert.AreEqual(sM.SearchString, ress.SearchString); Assert.AreEqual(9, ress.SearchResultTotalCount); Assert.AreEqual(2, ress.Results.Count); Assert.AreEqual(3, ress.Results[0].ResultCount); Assert.AreEqual("Vehicule", ress.Results[0].CategoryLabel); Assert.AreEqual("Voiture", ress.Results[0].SubCategoriesResults[0].CategoryLabel); Assert.AreEqual(2, ress.Results[0].SubCategoriesResults[0].ResultCount); Assert.AreEqual(0, ress.Results[0].SubCategoriesResults[0].SubCategoriesResults.Count); Assert.AreEqual("Moto", ress.Results[0].SubCategoriesResults[1].CategoryLabel); Assert.AreEqual(1, ress.Results[0].SubCategoriesResults[1].ResultCount); Assert.AreEqual(0, ress.Results[0].SubCategoriesResults[1].SubCategoriesResults.Count); Assert.AreEqual(6, ress.Results[1].ResultCount); Assert.AreEqual("Maison", ress.Results[1].CategoryLabel); Assert.AreEqual("Vaisselle", ress.Results[1].SubCategoriesResults[0].CategoryLabel); Assert.AreEqual(6, ress.Results[1].SubCategoriesResults[0].ResultCount); Assert.AreEqual(0, ress.Results[1].SubCategoriesResults[0].SubCategoriesResults.Count); }
public AdSearchResultModel SearchAds(AdSearchModel searchQuery) { // If this is a broad search, redirect to the base search through all ads if (!searchQuery.CategorySelectedId.HasValue) return LightSearchAds(searchQuery); Category selectedCategory = _repository.Get<Category>(searchQuery.CategorySelectedId); searchQuery.SetCategory(selectedCategory); // If this is a group category search, redirect to the base search through all this group ads if (selectedCategory.SubCategories.Count != 0) return LightSearchAds(searchQuery); return AdvancedSearchAds(searchQuery as AdvancedAdSearchModel); }
internal AdSearchResultModel LightSearchAds(AdSearchModel searchQuery) { String[] andSearchStrings = null; if (!String.IsNullOrEmpty(searchQuery.SearchString)) andSearchStrings = searchQuery.SearchString.Trim().Split(' '); int[] categories = GetCategoryIdsFromQuery(searchQuery.CategorySelectedId); Dictionary<String, String> searchParams = new Dictionary<String, String>(); IList<SearchAdCache> searchResult = _searchRepository.SearchAds(andSearchStrings, searchQuery.CitySelectedId, categories); AdSearchResultModel model = new AdSearchResultModel(searchQuery); model.SearchResultTotalCount = searchResult.Count; model.SearchResult = searchResult.Select(a => new AdSearchResultItemModel(a)).ToList(); return model; }
public AdSearchResultModel SearchAdsFromUrl(string cityLabel, string categoryLabel) { AdSearchModel model = new AdSearchModel(); if (!String.IsNullOrEmpty(categoryLabel)) { Category c = _categoryRepository.GetCategoryFromUrlPart(categoryLabel); if (c != null) { model.CategorySelectedId = c.Id; model.CategorySelectedLabel = c.Label; model.CategoryImagePath = c.ImageName; } } if (!String.IsNullOrEmpty(cityLabel)) { City city = _locationServices.GetCityFromLabelUrlPart(cityLabel); if (city != null) model.CitySelectedId = city.Id; } return LightSearchAds(model); }
public void QuickSearch_Test() { // Given AdSearchModel sM = new AdSearchModel(); sM.SearchString = "verre"; sM.CitySelectedId = 45; Category c1 = new Category { Label = "Vehicule", }; Category c2 = new Category { Label = "Voiture", }; c1.AddCategory(c2); Category c3 = new Category { Label = "Moto", }; c1.AddCategory(c3); Category c4 = new Category { Label = "Maison", }; Category c5 = new Category { Label = "Meuble", }; c4.AddCategory(c5); Category c6 = new Category { Label = "Vaisselle", }; c4.AddCategory(c6); IDictionary<Category, int> res = new Dictionary<Category, int>(); res.Add(c2, 2); res.Add(c3, 1); res.Add(c6, 6); var searchRepoMock = new Moq.Mock<ISearchRepository>(); searchRepoMock.Setup(x => x.CountByCategory(It.Is<string[]>(b => b[0] == sM.SearchString), It.Is<int?>(i => i.Value == sM.CitySelectedId))) .Returns(res); SearchServices service = new SearchServices(null, null, searchRepoMock.Object, null, null, null); // When AdHomeSearchResultModel ress = service.QuickSearch(sM); // Then Assert.AreEqual(sM.CitySelectedId, ress.CitySelectedId); Assert.AreEqual(sM.SearchString, ress.SearchString); Assert.AreEqual(9, ress.SearchResultTotalCount); Assert.AreEqual(2, ress.Results.Count); Assert.AreEqual(3, ress.Results[0].ResultCount); Assert.AreEqual("Vehicule", ress.Results[0].CategoryLabel); Assert.AreEqual("Voiture", ress.Results[0].SubCategoriesResults[0].CategoryLabel); Assert.AreEqual(2, ress.Results[0].SubCategoriesResults[0].ResultCount); Assert.AreEqual(0, ress.Results[0].SubCategoriesResults[0].SubCategoriesResults.Count); Assert.AreEqual("Moto", ress.Results[0].SubCategoriesResults[1].CategoryLabel); Assert.AreEqual(1, ress.Results[0].SubCategoriesResults[1].ResultCount); Assert.AreEqual(0, ress.Results[0].SubCategoriesResults[1].SubCategoriesResults.Count); Assert.AreEqual(6, ress.Results[1].ResultCount); Assert.AreEqual("Maison", ress.Results[1].CategoryLabel); Assert.AreEqual("Vaisselle", ress.Results[1].SubCategoriesResults[0].CategoryLabel); Assert.AreEqual(6, ress.Results[1].SubCategoriesResults[0].ResultCount); Assert.AreEqual(0, ress.Results[1].SubCategoriesResults[0].SubCategoriesResults.Count); }