public async Task SearchActionCallsServiceWithPagingParams() { var testDictionary = new Dictionary <string, object>(); testDictionary.Add("URN", "654321"); dynamic edubaseSearchResponse = new QueryResultsModel(1, null, new List <IDictionary <string, object> >() { testDictionary }, 50, 0); Task <dynamic> task = Task.Run(() => { return(edubaseSearchResponse); }); _mockEdubaseSearchService.Setup(m => m.SearchSchoolByName("Test", 50, 50, string.Empty, null)) .Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task); var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockFilterBuilder.Object, _valService, _mockEdubaseDataService.Object, _mockEdubaseSearchService.Object, _mockTrustSearchService.Object); controller.ControllerContext = new ControllerContext(_rc, controller); var result = await controller.Search("Test", "", SearchTypes.SEARCH_BY_NAME_ID, null, null, null, null, null, "", 2); _mockEdubaseSearchService.Verify(req => req.SearchSchoolByName("Test", 50, 50, "", null), Times.Once()); }
public async Task SearchActionRunsAndReturnsTheOnlyLaSuggestionResultIfSearchByLAName() { dynamic laSearchResponse = new List <dynamic>() { new{ id = "840", LANAME = "County Durham", REGION = "1", REGIONNAME = "North East A" }, new{ id = "841", LANAME = "Darlington", REGION = "1", REGIONNAME = "North East A" } }; _mockLaService.Setup(m => m.GetLocalAuthorities()).Returns(() => laSearchResponse); _mockLaSearchService.Setup(m => m.SearchExactMatch("Test")).Returns(() => new LaViewModel() { id = "123", LaName = "Test" }); var testDictionary = new Dictionary <string, object>(); testDictionary.Add("URN", "654321"); dynamic edubaseSearchResponse = new QueryResultsModel(2, null, new List <IDictionary <string, object> >() { testDictionary }, 50, 0); Task <dynamic> task = Task.Run(() => { return(edubaseSearchResponse); }); _mockEdubaseSearchService.Setup(m => m.SearchSchoolByLaCode("123", 0, 50, "EstablishmentName", null)).Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task); var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockFilterBuilder.Object, _valService, _mockEdubaseDataService.Object, _mockEdubaseSearchService.Object, _mockTrustSearchService.Object); controller.ControllerContext = new ControllerContext(_rc, controller); var result = await controller.Search(null, "", SearchTypes.SEARCH_BY_LA_CODE_NAME, null, null, null, "Test", null, null); Assert.IsTrue(result is ViewResult); Assert.AreEqual("SearchResults", (result as ViewResult).ViewName); }
public async Task <QueryResultsModel> ExecuteGeoSpatialSearch(string index, string lat, string lon, decimal distance, string filter, string orderBy, int skip, int take) { const string search = "*"; var latitude = double.Parse(lat); var longitude = double.Parse(lon); var filterBuilder = new StringBuilder(); var orderByField = string.IsNullOrEmpty(orderBy) ? string.Format(GeoDistanceLocationOrderFormat, latitude, longitude) : orderBy; filterBuilder.AppendFormat(GeoDistanceLocationSearchFormat, latitude, longitude, distance); if (!string.IsNullOrEmpty(filter)) { filterBuilder.AppendFormat(" and " + filter); } var connection = ApiConnection.Create(_searchInstance, _key); var client = new IndexQueryClient(connection); var response = await client.SearchAsync(index, new SearchQuery(search) .OrderBy(orderByField) .Facet("TypeOfEstablishment") .Facet("OverallPhase") .Facet("ReligiousCharacter") .Facet("OfstedRating") .Count(true) .Filter(filterBuilder.ToString()) .Skip(skip) .Top(take)); if (!response.IsSuccess) { Console.WriteLine("{0}: {1}", response.Error.Code, response.Error.Message); } var results = new QueryResultsModel(response.Body.Count, response.Body.Facets, CalcDistance(response.Body.Records.Select(x => x.Properties), lat, lon), take, skip) { QueryLat = latitude.ToString(), QueryLong = longitude.ToString() }; return(results); }
public async Task SearchActionReturnsSuggestionsViewIfResultEmpty() { dynamic edubaseSearchResponse = new QueryResultsModel(0, null, null, 50, 0); Task <dynamic> task = Task.Run(() => { return(edubaseSearchResponse); }); _mockEdubaseSearchService.Setup(m => m.SearchSchoolByName("Test", 0, 50, null, null)).Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task); var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockFilterBuilder.Object, _valService, _mockEdubaseDataService.Object, _mockEdubaseSearchService.Object, _mockTrustSearchService.Object); controller.ControllerContext = new ControllerContext(_rc, controller); var result = await controller.Search("Test", "", SearchTypes.SEARCH_BY_NAME_ID, null, null, null, null, null, null); Assert.IsNotNull(result); Assert.AreEqual("SchoolSearch", (result as RedirectToRouteResult).RouteValues["Controller"]); Assert.AreEqual("SuggestSchool", (result as RedirectToRouteResult).RouteValues["Action"]); Assert.AreEqual("Test", (result as RedirectToRouteResult).RouteValues["NameId"]); }