コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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"]);
        }