public async Task SearchResultsShouldReturnViewResultWhenFrameworkSearchIsSuccessful() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.Success }; var stubViewModel = new ProviderFrameworkSearchResultViewModel { Title = "title1" }; ProviderController controller = new ProviderControllerBuilder().SetupMappingService( x => x.Map(It.IsAny <ProviderSearchResponse>(), It.IsAny <Action <IMappingOperationOptions <ProviderSearchResponse, ProviderFrameworkSearchResultViewModel> > >()), stubViewModel).SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)); var searchCriteria = new ProviderSearchQuery { ApprenticeshipId = "123", PostCode = "AB3 1SD" }; var result = await controller.FrameworkResults(searchCriteria); result.Should().BeOfType <ViewResult>(); var viewResult = (ViewResult)result; viewResult.Model.Should().Be(stubViewModel); }
public async Task SearchResultsShouldReturnNotFoundStatusCodeIfTheStandardIsNotFound() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.ApprenticeshipNotFound }; var stubViewModel = new ProviderStandardSearchResultViewModel(); ProviderController controller = new ProviderControllerBuilder() .SetupMappingService(x => x.Map <ProviderSearchResponse, ProviderStandardSearchResultViewModel>(It.IsAny <ProviderSearchResponse>()), stubViewModel) .SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)); var result = await controller.StandardResults(new ProviderSearchQuery()); result.Should().BeOfType <HttpStatusCodeResult>(); var viewResult = (HttpStatusCodeResult)result; viewResult.StatusCode.Should().Be((int)HttpStatusCode.NotFound); }
public async Task SearchResultsShouldReturnViewResultWhenStandardSearchIsSuccessful() { var stubSearchResponse = new ProviderSearchResponse { Success = true }; var stubViewModel = new ProviderStandardSearchResultViewModel(); ProviderController controller = new ProviderControllerBuilder() .SetupMappingService(x => x.Map(It.IsAny <ProviderSearchResponse>(), It.IsAny <Action <IMappingOperationOptions <ProviderSearchResponse, ProviderStandardSearchResultViewModel> > >()), stubViewModel) .SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)); var result = await controller.StandardResults(new ProviderSearchQuery()); result.Should().BeOfType <ViewResult>(); var viewResult = (ViewResult)result; viewResult.Model.Should().Be(stubViewModel); }
public async Task FrameworkSearchResultsShouldReturnBadRequestStatusCodeIfApprenticeshipIdIsInvalid() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.InvalidApprenticeshipId }; var stubViewModel = new ProviderFrameworkSearchResultViewModel(); ProviderController controller = new ProviderControllerBuilder() .SetupMappingService(x => x.Map <ProviderSearchResponse, ProviderFrameworkSearchResultViewModel>(It.IsAny <ProviderSearchResponse>()), stubViewModel) .SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)); var result = await controller.FrameworkResults(new ProviderSearchQuery()); result.Should().BeOfType <HttpStatusCodeResult>(); var viewResult = (HttpStatusCodeResult)result; viewResult.StatusCode.Should().Be((int)HttpStatusCode.BadRequest); }
public async Task SearchResultsShouldRedirectToSearchEntryPageIfPostCodeIsNotSet() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.PostCodeInvalidFormat }; var mockUrlHelper = new Mock <UrlHelper>(); mockUrlHelper.Setup(x => x.Action("SearchForStandardProviders", "Apprenticeship", It.IsAny <object>())).Returns("someurl"); var stubViewModel = new ProviderStandardSearchResultViewModel(); ProviderController controller = new ProviderControllerBuilder() .SetupMappingService(x => x.Map <ProviderSearchResponse, ProviderStandardSearchResultViewModel>(It.IsAny <ProviderSearchResponse>()), stubViewModel) .SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)) .WithUrl(mockUrlHelper.Object); var result = await controller.StandardResults(new ProviderSearchQuery()); result.Should().BeOfType <RedirectResult>(); var viewResult = (RedirectResult)result; viewResult.Url.Should().Be("someurl"); }
public async Task SearchResultsShouldRedirectToLatPageIfParameterExtendsUpperBound() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.PageNumberOutOfUpperBound }; var mockUrlHelper = new Mock <UrlHelper>(); mockUrlHelper.Setup(x => x.Action("StandardResults", "Provider", It.IsAny <RouteValueDictionary>())).Returns("someurl"); var stubViewModel = new ProviderStandardSearchResultViewModel(); ProviderController controller = new ProviderControllerBuilder() .SetupMappingService(x => x.Map <ProviderSearchResponse, ProviderStandardSearchResultViewModel>(It.IsAny <ProviderSearchResponse>()), stubViewModel) .SetupMediator(x => x.Send <ProviderSearchResponse>(It.IsAny <ProviderSearchQuery>(), default(CancellationToken)), Task.FromResult(stubSearchResponse)) .WithUrl(mockUrlHelper.Object); var result = await controller.StandardResults(new ProviderSearchQuery()); result.Should().BeOfType <RedirectResult>(); var viewResult = (RedirectResult)result; viewResult.Url.Should().Be("someurl"); }
public async Task <ActionResult> ProviderSearch([FromBody] ProviderSearchRequest request) { var criteria = new ProviderSearchCriteriaStructure() { Keyword = request.Keyword, Region = request.Region, TopResults = request.TopResults, Town = request.Town }; _log.LogInformation($"Provider search with keyword {request.Keyword}"); var result = await _service.ProviderSearch(_log, criteria); var response = new ProviderSearchResponse() { ODataContext = result.ODataContext, ODataCount = result.ODataCount, SearchFacets = result.SearchFacets, Value = result.Value.Select(i => new ProviderSearchResponseItem() { CourseDirectoryName = i.CourseDirectoryName, id = i.id, Name = i.Name, Postcode = i.Postcode, ProviderAlias = i.ProviderAlias, ProviderStatus = i.ProviderStatus, Region = i.Region, Status = i.Status, Town = i.Town, TradingName = i.TradingName, UKPRN = i.UKPRN }) }; return(new OkObjectResult(response)); }
public async Task <IActionResult> GetProviders([FromBody] SearchRequest request) { SAPContext context = HttpContext.RequestServices.GetService(typeof(SAPContext)) as SAPContext; SAPbobsCOM.Recordset oRecSet = (SAPbobsCOM.Recordset)context.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); List <string> where = new List <string>(); if (request.columns[0].search.value != String.Empty) { where.Add($"LOWER(\"CardCode\") Like LOWER('%{request.columns[0].search.value}%')"); } if (request.columns[1].search.value != String.Empty) { where.Add($"LOWER(\"CardName\") Like LOWER('%{request.columns[1].search.value}%')"); } if (request.columns[2].search.value != String.Empty) { where.Add($"LOWER(\"CardFName\") Like LOWER('%{request.columns[2].search.value}%')"); } if (request.columns[3].search.value != String.Empty) { where.Add($"LOWER(\"Currency\") Like LOWER('%{request.columns[3].search.value}%')"); } string orderby = ""; if (request.order[0].column == 0) { orderby = $" ORDER BY \"CardCode\" {request.order[0].dir}"; } else if (request.order[0].column == 1) { orderby = $" ORDER BY \"CardName\" {request.order[0].dir}"; } else if (request.order[0].column == 2) { orderby = $" ORDER BY \"CardFName\" {request.order[0].dir}"; } else if (request.order[0].column == 3) { orderby = $" ORDER BY \"Currency\" {request.order[0].dir}"; } else { orderby = $" ORDER BY \"CardCode\" DESC"; } string whereClause = String.Join(" AND ", where); string query = @" Select ""CardCode"", ""CardName"", ""CardFName"", ""Currency"" From OCRD Where ""CardType"" = 'S' "; if (where.Count != 0) { query += " AND " + whereClause; } query += orderby; query += " LIMIT " + request.length + " OFFSET " + request.start + ""; oRecSet.DoQuery(query); var orders = context.XMLTOJSON(oRecSet.GetAsXML())["OCRD"].ToObject <List <ProviderSearchDetail> >(); string queryCount = @" Select Count (*) as COUNT From OCRD Where ""CardType"" = 'S' "; if (where.Count != 0) { queryCount += " AND " + whereClause; } oRecSet.DoQuery(queryCount); int COUNT = context.XMLTOJSON(oRecSet.GetAsXML())["OCRD"][0]["COUNT"].ToObject <int>(); ProviderSearchResponse respose = new ProviderSearchResponse { data = orders, draw = request.Draw, recordsFiltered = COUNT, recordsTotal = COUNT, }; return(Ok(respose)); }
public void ShouldFullyPopulateTheMappedViewModel() { var mapper = new MappingService(null); var trainingLocations = new List <TrainingLocation> { new TrainingLocation { LocationId = 1, LocationName = "Location1", Address = new Address { Postcode = "N17" } } }; var results = new ProviderSearchResults { TrainingOptionsAggregation = new Dictionary <string, long?> { ["dayrelease"] = 10, ["blockrelease"] = 2 }, SelectedTrainingOptions = new List <string> { "dayrelease" }, Hits = new List <ProviderSearchResultItem> { new ProviderSearchResultItem { LocationId = 1, LocationName = "Location1", Address = new Address { Postcode = "N17" }, OverallAchievementRate = 42.5 }, new ProviderSearchResultItem { LocationId = 1, LocationName = "Location1", Address = new Address { Postcode = "N17" } }, new ProviderSearchResultItem { LocationId = 1, LocationName = "Location1", Address = new Address { Postcode = "N17" } } }, TotalResults = 105, ResultsToTake = 10, PostCode = "GU21 6DB", PostCodeMissing = true, ApprenticeshipId = "1234", Title = "Test Name" }; var source = new ProviderSearchResponse { Success = false, CurrentPage = 2, Results = results, SearchTerms = "a b c", ShowAllProviders = true, TotalResultsForCountry = 1000, StatusCode = ProviderSearchResponseCodes.ApprenticeshipNotFound }; var viewModel = mapper.Map <ProviderSearchResponse, ProviderStandardSearchResultViewModel>(source); viewModel.ActualPage.Should().Be(2); viewModel.DeliveryModes.Count().Should().Be(2); viewModel.DeliveryModes.Count(x => x.Checked).Should().Be(1); viewModel.Hits.Count().Should().Be(3); viewModel.LastPage.Should().Be(11); viewModel.SearchTerms.Should().Be("a b c"); viewModel.PostCode.Should().Be("GU21 6DB"); viewModel.PostCodeMissing.Should().BeTrue(); viewModel.ResultsToTake.Should().Be(10); viewModel.ShowAll.Should().BeTrue(); viewModel.StandardId.Should().Be("1234"); viewModel.StandardName.Should().Be("Test Name"); viewModel.TotalResultsForCountry.Should().Be(1000); viewModel.TotalResults.Should().Be(105); viewModel.HasError.Should().BeTrue(); viewModel.Hits.First().LocationId.Should().Be(1); viewModel.Hits.First().LocationName.Should().Be("Location1"); viewModel.Hits.First().Address.Postcode.Should().Be("N17"); viewModel.Hits.First().AchievementRateMessage.Should().Be("42.5%"); viewModel.Hits.ElementAt(2).AchievementRateMessage.Should().Be("no data available"); }