예제 #1
0
        public void SearchAdsFromUrl_CategoryIsSelected_ReturnParentCategoryLabelUrlPartAsImagePath()
        {
            // Given
            Category cat = new Category {
                Id = 12, LabelUrlPart = "cat-url-label", Label = "Label", ImageName = "image"
            };

            var adRepoMock = new Moq.Mock <ISearchRepository>();

            adRepoMock.Setup(r => r.SearchAds(null, null, It.Is <int[]>(x => x[0] == cat.Id))).Returns(new List <SearchAdCache>());

            var repoMock = new Moq.Mock <IRepository>();

            repoMock.Setup(r => r.Get <Category>(cat.Id)).Returns(cat);

            var catRepoMock = new Moq.Mock <ICategoryRepository>();

            catRepoMock.Setup(r => r.GetCategoryFromUrlPart("cat-url-label")).Returns(cat);

            SearchServices service = new SearchServices(repoMock.Object, catRepoMock.Object, adRepoMock.Object, null, null, null);

            // When
            AdSearchResultModel result = service.SearchAdsFromUrl(null, "cat-url-label");

            // Then
            Assert.IsNull(result.SearchString);
            Assert.IsNull(result.CitySelectedId);
            Assert.AreEqual(12, result.CategorySelectedId);
            Assert.AreEqual("image", result.CategoryImagePath);
            Assert.AreEqual("Label", result.CategorySelectedLabel);

            adRepoMock.VerifyAll();
        }
예제 #2
0
        internal AdSearchResultModel AdvancedSearchAds(AdvancedAdSearchModel searchQuery)
        {
            // This search relies on a selected category
            Category selectedCategory = _repository.Get <Category>(searchQuery.CategorySelectedId);

            // create search parameters object from AdvancedAdSearchModel
            AdSearchParameters searchParameters = CreateSearchParameters(searchQuery);

            // call repo with Type T based on switch on category with parameters (same for all objects)
            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            switch (selectedCategory.Type)
            {
            case AdTypeEnum.CarAd:
                searchResult = _searchRepository.AdvancedSearchAds <CarAd>(searchParameters);
                break;

            case AdTypeEnum.OtherVehiculeAd:
                searchResult = _searchRepository.AdvancedSearchAds <OtherVehicleAd>(searchParameters);
                break;

            case AdTypeEnum.MotoAd:
                searchResult = _searchRepository.AdvancedSearchAds <MotoAd>(searchParameters);
                break;

            case AdTypeEnum.RealEstateAd:
                searchResult = _searchRepository.AdvancedSearchAds <RealEstateAd>(searchParameters);
                break;

            case AdTypeEnum.MotorBoatAd:
                searchResult = _searchRepository.AdvancedSearchAds <MotorBoatAd>(searchParameters);
                break;

            case AdTypeEnum.SailingBoatAd:
                searchResult = _searchRepository.AdvancedSearchAds <SailingBoatAd>(searchParameters);
                break;

            case AdTypeEnum.MotorBoatEngineAd:
                searchResult = _searchRepository.AdvancedSearchAds <MotorBoatEngineAd>(searchParameters);
                break;

            case AdTypeEnum.WaterSportAd:
                searchResult = _searchRepository.AdvancedSearchAds <WaterSportAd>(searchParameters);
                break;

            case AdTypeEnum.Ad:
                searchResult = _searchRepository.AdvancedSearchAds <Ad>(searchParameters);
                break;
            }

            // Create models for search results
            AdSearchResultModel model = new AdSearchResultModel(searchQuery);

            model.SearchResultTotalCount = searchResult.Count;
            model.SearchResult           = searchResult.Select(a => new AdSearchResultItemModel(a)).ToList();

            return(model);
        }
예제 #3
0
        public void SearchAds_CategoryGroupIsSelected_CallAdRepoWithSubCategoriesIds()
        {
            // Given
            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "ship",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = new Bea.Domain.Categories.Category()
            });

            Category group = new Category();

            group.AddCategory(new Category {
                Id = 12
            });
            group.AddCategory(new Category {
                Id = 17
            });

            var adRepoMock = new Moq.Mock <ISearchRepository>();

            adRepoMock.Setup(r => r.SearchAds(new string[] { "ship" }, null, new int[] { 12, 17 })).Returns(searchResult);

            var repoMock = new Moq.Mock <IRepository>();

            repoMock.Setup(r => r.Get <Category>(12)).Returns(group);


            AdvancedAdSearchModel model = new AdvancedAdSearchModel()
            {
                SearchString       = "ship",
                CategorySelectedId = 12
            };

            SearchServices service = new SearchServices(repoMock.Object, null, adRepoMock.Object, null, null, null);

            // When
            AdSearchResultModel result = service.LightSearchAds(model);

            // Then
            Assert.AreEqual("ship", result.SearchString);
            Assert.IsNull(result.CitySelectedId);
            Assert.AreEqual(12, result.CategorySelectedId);
            Assert.AreEqual(1, result.SearchResult.Count);
            Assert.AreEqual(1, result.SearchResultTotalCount);
            Assert.AreEqual("ship", result.SearchResult[0].Title);

            adRepoMock.VerifyAll();
        }
예제 #4
0
        //
        // GET: /Search/Search
        public ActionResult Search(AdvancedAdSearchModel model)
        {
            ViewBag.Categories = _categoryServices.GetAllCategoriesOfAGroup(model.CategorySelectedId)
                                 .Select(x => new SelectListItem {
                Text = x.Label, Value = x.Id.ToString()
            });

            AdSearchResultModel result = _searchServices.SearchAds(model);

            return(View("Index", result));
        }
예제 #5
0
        public void SearchAds_2SearchString_CallAdRepoWithSeveralWords()
        {
            // Given
            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "ship",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = new Bea.Domain.Categories.Category()
            });
            searchResult.Add(new SearchAdCache
            {
                Title = "computer",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = new Bea.Domain.Categories.Category()
            });

            var adRepoMock = new Moq.Mock <ISearchRepository>();

            adRepoMock.Setup(r => r.SearchAds(new string[] { "ship", "computer" }, 98, null)).Returns(searchResult);

            AdvancedAdSearchModel model = new AdvancedAdSearchModel()
            {
                SearchString   = "ship computer",
                CitySelectedId = 98
            };

            SearchServices service = new SearchServices(null, null, adRepoMock.Object, null, null, null);

            // When
            AdSearchResultModel result = service.LightSearchAds(model);

            // Then
            Assert.AreEqual("ship computer", result.SearchString);
            Assert.AreEqual(98, result.CitySelectedId);
            Assert.AreEqual(2, result.SearchResult.Count);
            Assert.AreEqual(2, result.SearchResultTotalCount);
            Assert.AreEqual("ship", result.SearchResult[0].Title);
            Assert.AreEqual("computer", result.SearchResult[1].Title);

            adRepoMock.VerifyAll();
        }
예제 #6
0
        public void AdvancedSearchAds_SearchThroughMotorBoatEngineAds_CallSearchRepoOnMotorBoatEngineAds()
        {
            // Given
            Category cat = new Category {
                Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.MotorBoatEngineAd
            };

            AdvancedAdSearchModel model = new AdvancedAdSearchModel()
            {
                CategorySelectedId = 1,
                SearchString       = "moteur",
                MinHp = 12,
                MaxHp = 38,
                SelectedMotorTypeId = 2
            };

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "moteur",
                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.AdvancedSearchAds <MotorBoatEngineAd>(
                                     It.Is <AdSearchParameters>(p =>
                                                                p.AndSearchStrings[0].Equals("moteur") &&
                                                                p.MinHp == 12 &&
                                                                p.MaxHp == 38 &&
                                                                p.MotorEngineTypeId == 2))).Returns(searchResult);

            SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, null, null, null);

            // When
            AdSearchResultModel result = service.AdvancedSearchAds(model);

            // Then
            Assert.AreEqual(1, result.SearchResultTotalCount);
        }
예제 #7
0
        public void SearchAdsFromUrl_CategoryIsSelected_RunSearchWithCategory()
        {
            // Given
            Category cat = new Category {
                Id = 12, LabelUrlPart = "cat-url-label", Label = "Label"
            };

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "ship",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = cat
            });

            var adRepoMock = new Moq.Mock <ISearchRepository>();

            adRepoMock.Setup(r => r.SearchAds(null, null, It.Is <int[]>(x => x[0] == cat.Id))).Returns(searchResult);

            var repoMock = new Moq.Mock <IRepository>();

            repoMock.Setup(r => r.Get <Category>(cat.Id)).Returns(cat);

            var catRepoMock = new Moq.Mock <ICategoryRepository>();

            catRepoMock.Setup(r => r.GetCategoryFromUrlPart("cat-url-label")).Returns(cat);

            SearchServices service = new SearchServices(repoMock.Object, catRepoMock.Object, adRepoMock.Object, null, null, null);

            // When
            AdSearchResultModel result = service.SearchAdsFromUrl(null, "cat-url-label");

            // Then
            Assert.IsNull(result.SearchString);
            Assert.IsNull(result.CitySelectedId);
            Assert.AreEqual(12, result.CategorySelectedId);
            Assert.AreEqual("Label", result.CategorySelectedLabel);
            Assert.AreEqual(1, result.SearchResult.Count);
            Assert.AreEqual(1, result.SearchResultTotalCount);
            Assert.AreEqual("ship", result.SearchResult[0].Title);

            adRepoMock.VerifyAll();
        }
예제 #8
0
        //
        // GET: /Search/SearchFromUrl
        public ActionResult SearchFromUrl(String cityLabel, String categoryLabel)
        {
            IList <CategoryItemModel> categoryGroup = _categoryServices.GetAllCategoriesOfAGroupFromUrlPart(categoryLabel);

            if (categoryGroup.Count == 0)
            {
                return(View("CategoryDoesNotExists"));
            }

            AdSearchResultModel result = _searchServices.SearchAdsFromUrl(cityLabel, categoryLabel);

            ViewBag.Categories = categoryGroup.Select(x => new SelectListItem {
                Text = x.Label, Value = x.Id.ToString()
            });

            return(View("Index", result));
        }
예제 #9
0
        //
        // GET: /Search/
        public ActionResult Index(AdvancedAdSearchModel model)
        {
            ViewBag.Categories = _categoryServices.GetAllCategoriesOfAGroup(model.CategorySelectedId)
                                 .Select(x => new SelectListItem {
                Text = x.Label, Value = x.Id.ToString()
            });

            // Equivalent to Search/Search?
            if (model.CategorySelectedId.HasValue)
            {
                AdSearchResultModel result = _searchServices.SearchAds(model);
                return(View(result));
            }
            // Equivalent to Search/QuickSearch? (when no categories)
            else
            {
                AdHomeSearchResultModel result = _searchServices.QuickSearch(model);
                return(View("QuickSearch", result));
            }
        }
예제 #10
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);
        }
예제 #11
0
        public void SearchAdsFromUrl_CityIsSelected_RunSearchWithCity()
        {
            // Given
            City city = new City {
                Id = 12, LabelUrlPart = "city-url-label", Label = "Label"
            };

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title    = "ship",
                City     = city,
                Category = new Category {
                    Label = "pouet"
                }
            });

            var adRepoMock = new Moq.Mock <ISearchRepository>();

            adRepoMock.Setup(r => r.SearchAds(null, city.Id, null)).Returns(searchResult);

            var catLocationServiceMock = new Moq.Mock <ILocationServices>();

            catLocationServiceMock.Setup(r => r.GetCityFromLabelUrlPart("city-url-label")).Returns(city);

            SearchServices service = new SearchServices(null, null, adRepoMock.Object, null, null, catLocationServiceMock.Object);

            // When
            AdSearchResultModel result = service.SearchAdsFromUrl("city-url-label", null);

            // Then
            Assert.IsNull(result.SearchString);
            Assert.AreEqual(12, result.CitySelectedId);
            Assert.AreEqual(1, result.SearchResult.Count);
            Assert.AreEqual(1, result.SearchResultTotalCount);
            Assert.AreEqual("ship", result.SearchResult[0].Title);

            adRepoMock.VerifyAll();
        }
예제 #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);
        }
예제 #13
0
        public void AdvancedSearchAds_SearchThroughSailingBoatAds_CallSearchRepoOnSailingBoatAds()
        {
            // Given
            Category cat = new Category {
                Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.SailingBoatAd
            };

            AdvancedAdSearchModel model = new AdvancedAdSearchModel()
            {
                CategorySelectedId        = 1,
                SearchString              = "voilier",
                AgeBracketSelectedId      = 2,
                MinLength                 = 0,
                MaxLength                 = 13,
                SelectedSailingBoatTypeId = 6,
                SelectedHullTypeId        = 2
            };

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "voilier",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = cat
            });

            IDictionary <int, BracketItemReference> ageBr = new Dictionary <int, BracketItemReference>();

            ageBr.Add(2, new BracketItemReference {
                LowValue = 0, HighValue = 11
            });

            var refMock = new Moq.Mock <IReferenceServices>();

            refMock.Setup(s => s.GetAllAgeBrackets()).Returns(ageBr);

            var repoMock = new Moq.Mock <IRepository>();

            repoMock.Setup(r => r.Get <Category>(cat.Id)).Returns(cat);

            var helperMock = new Moq.Mock <IHelperService>();

            helperMock.Setup(r => r.GetCurrentDateTime()).Returns(new DateTime(2013, 01, 01));

            var searchRepoMock = new Moq.Mock <ISearchRepository>();

            searchRepoMock.Setup(r => r.AdvancedSearchAds <SailingBoatAd>(
                                     It.Is <AdSearchParameters>(p =>
                                                                p.AndSearchStrings[0].Equals("voilier") &&
                                                                p.MinLength == 0.0 &&
                                                                p.MaxLength == 13.0 &&
                                                                p.SailingBoatTypeId == 6 &&
                                                                p.HullTypeId == 2 &&
                                                                p.MinYear == 2002 &&
                                                                p.MaxYear == 2013))).Returns(searchResult);

            SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, helperMock.Object, refMock.Object, null);

            // When
            AdSearchResultModel result = service.AdvancedSearchAds(model);

            // Then
            Assert.AreEqual(1, result.SearchResultTotalCount);
        }
예제 #14
0
        internal AdSearchResultModel AdvancedSearchAds(AdvancedAdSearchModel searchQuery)
        {
            // This search relies on a selected category
            Category selectedCategory = _repository.Get<Category>(searchQuery.CategorySelectedId);

            // create search parameters object from AdvancedAdSearchModel
            AdSearchParameters searchParameters = CreateSearchParameters(searchQuery);

            // call repo with Type T based on switch on category with parameters (same for all objects)
            IList<SearchAdCache> searchResult = new List<SearchAdCache>();

            switch (selectedCategory.Type)
            {
                case AdTypeEnum.CarAd:
                    searchResult = _searchRepository.AdvancedSearchAds<CarAd>(searchParameters);
                    break;
                case AdTypeEnum.OtherVehiculeAd:
                    searchResult = _searchRepository.AdvancedSearchAds<OtherVehicleAd>(searchParameters);
                    break;
                case AdTypeEnum.MotoAd:
                    searchResult = _searchRepository.AdvancedSearchAds<MotoAd>(searchParameters);
                    break;
                case AdTypeEnum.RealEstateAd:
                    searchResult = _searchRepository.AdvancedSearchAds<RealEstateAd>(searchParameters);
                    break;
                case AdTypeEnum.MotorBoatAd:
                    searchResult = _searchRepository.AdvancedSearchAds<MotorBoatAd>(searchParameters);
                    break;
                case AdTypeEnum.SailingBoatAd:
                    searchResult = _searchRepository.AdvancedSearchAds<SailingBoatAd>(searchParameters);
                    break;
                case AdTypeEnum.MotorBoatEngineAd:
                    searchResult = _searchRepository.AdvancedSearchAds<MotorBoatEngineAd>(searchParameters);
                    break;
                case AdTypeEnum.WaterSportAd:
                    searchResult = _searchRepository.AdvancedSearchAds<WaterSportAd>(searchParameters);
                    break;
                case AdTypeEnum.Ad:
                    searchResult = _searchRepository.AdvancedSearchAds<Ad>(searchParameters);
                    break;
            }

            // Create models for search results
            AdSearchResultModel model = new AdSearchResultModel(searchQuery);
            model.SearchResultTotalCount = searchResult.Count;
            model.SearchResult = searchResult.Select(a => new AdSearchResultItemModel(a)).ToList();

            return model;
        }
예제 #15
0
        public void AdvancedSearchAds_SearchThroughRealEstateAds_CallSearchRepoOnRealEstateAds()
        {
            // Given
            Category cat = new Category {
                Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.RealEstateAd
            };

            AdvancedAdSearchModel model = new AdvancedAdSearchModel()
            {
                CategorySelectedId       = 1,
                SearchString             = "appart",
                NbRoomsBracketSelectedId = 2,
                SelectedDistrictId       = 71,
                SelectedRealEstateTypeId = 2,
                MinPrice = 0,
                MaxPrice = 100000,
                SurfaceAreaBracketSelectedId = 3,
                IsFurnished = true
            };

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "appart",
                City  = new City()
                {
                    Label = "the city"
                },
                Category = cat
            });

            IDictionary <int, BracketItemReference> nbRoomsBr = new Dictionary <int, BracketItemReference>();

            nbRoomsBr.Add(2, new BracketItemReference {
                LowValue = 2, HighValue = 3
            });

            IDictionary <int, BracketItemReference> surfBr = new Dictionary <int, BracketItemReference>();

            surfBr.Add(3, new BracketItemReference {
                LowValue = 45, HighValue = 70
            });

            var refMock = new Moq.Mock <IReferenceServices>();

            refMock.Setup(s => s.GetAllRealEstateNbRoomsBrackets()).Returns(nbRoomsBr);
            refMock.Setup(s => s.GetAllSurfaceAreaBrackets()).Returns(surfBr);

            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.AdvancedSearchAds <RealEstateAd>(
                                     It.Is <AdSearchParameters>(p =>
                                                                p.AndSearchStrings[0].Equals("appart") &&
                                                                p.MinNbRooms == 2 &&
                                                                p.MaxNbRooms == 3 &&
                                                                p.MinPrice == 0d &&
                                                                p.MaxPrice == 100000d &&
                                                                p.RealEstateTypeId == 2 &&
                                                                p.MinSurfaceArea == 45 &&
                                                                p.MaxSurfaceArea == 70 &&
                                                                p.IsFurnished.Value &&
                                                                p.DistrictId == 71))).Returns(searchResult);

            SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, null, refMock.Object, null);

            // When
            AdSearchResultModel result = service.AdvancedSearchAds(model);

            // Then
            Assert.AreEqual(1, result.SearchResultTotalCount);
        }
예제 #16
0
        public void AdvancedSearchAds_SearchThroughOtherVehicleAds_CallSearchRepoOnOtherVehicleAds()
        {
            // Given
            Category cat = new Category {
                Id = 1, LabelUrlPart = "cat-url-label", Label = "Label", Type = AdTypeEnum.OtherVehiculeAd
            };

            AdvancedAdSearchModel model = new AdvancedAdSearchModel();

            model.CategorySelectedId   = 1;
            model.SearchString         = "toto";
            model.CitySelectedId       = 12;
            model.AgeBracketSelectedId = 1;
            model.KmBracketSelectedId  = 1;
            model.FuelSelectedId       = 89;

            IList <SearchAdCache> searchResult = new List <SearchAdCache>();

            searchResult.Add(new SearchAdCache
            {
                Title = "car",
                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 helperMock = new Moq.Mock <IHelperService>();

            helperMock.Setup(r => r.GetCurrentDateTime()).Returns(new DateTime(2013, 01, 01));

            IDictionary <int, BracketItemReference> ageRef = new Dictionary <int, BracketItemReference>();

            ageRef.Add(1, new BracketItemReference {
                LowValue = 0, HighValue = 3
            });
            IDictionary <int, BracketItemReference> kmRef = new Dictionary <int, BracketItemReference>();

            kmRef.Add(1, new BracketItemReference {
                LowValue = 50, HighValue = 100
            });

            var refMock = new Moq.Mock <IReferenceServices>();

            refMock.Setup(s => s.GetAllAgeBrackets()).Returns(ageRef);
            refMock.Setup(s => s.GetAllKmBrackets()).Returns(kmRef);

            var searchRepoMock = new Moq.Mock <ISearchRepository>();

            searchRepoMock.Setup(r => r.AdvancedSearchAds <OtherVehicleAd>(
                                     It.Is <AdSearchParameters>(p =>
                                                                p.AndSearchStrings[0].Equals("toto") &&
                                                                p.CityId == 12 &&
                                                                p.CategoryIds[0] == 1 &&
                                                                p.MinKm == 50 &&
                                                                p.MaxKm == 100 &&
                                                                p.MinYear == 2010 &&
                                                                p.MaxYear == 2013 &&
                                                                p.FueldId == 89))).Returns(searchResult);

            SearchServices service = new SearchServices(repoMock.Object, null, searchRepoMock.Object, helperMock.Object, refMock.Object, null);

            // When
            AdSearchResultModel result = service.AdvancedSearchAds(model);

            // Then
            Assert.AreEqual(1, result.SearchResultTotalCount);
        }
예제 #17
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;
        }