Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        //
        // 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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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;
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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);
        }