Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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");
        }
Esempio n. 6
0
        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");
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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");
        }