public void WhenSearchResultHasPaginationAndIsTheLastPageShouldShowOnlyBackPageLink()
        {
            var detail = new StandardResults();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 20,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test standard name",
                Hits            = new List <StandardProviderResultItemViewModel>
                {
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel(),
                    new StandardProviderResultItemViewModel()
                },
                ActualPage    = 3,
                LastPage      = 3,
                ResultsToTake = 10,
                PostCode      = "Test postcode",
                DeliveryModes = new List <DeliveryModeViewModel>(),
                HasError      = false
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".page-navigation__btn.prev").Should().Contain("Previous page").And.Contain("2 of 3");
            GetPartial(html, ".page-navigation__btn.next").Should().BeEmpty();
        }
        public void ShouldDetermineEmptyResultsForGoogleAnalytic()
        {
            var searchPage       = new StandardResults();
            var modelWithResults = new ProviderStandardSearchResultViewModel
            {
                TotalResults  = 1,
                Hits          = new[] { new StandardProviderResultItemViewModel() },
                DeliveryModes = new List <DeliveryModeViewModel>(),
                SortOrder     = "0"
            };

            var modelWithoutResults = new ProviderStandardSearchResultViewModel
            {
                TotalResults  = 1,
                Hits          = new StandardProviderResultItemViewModel[0],
                DeliveryModes = new List <DeliveryModeViewModel>(),
                SortOrder     = "0"
            };

            var htmlWithResults    = searchPage.RenderAsHtml(modelWithResults).ToAngleSharp();
            var htmlWithoutResults = searchPage.RenderAsHtml(modelWithoutResults).ToAngleSharp();

            GetAttribute(htmlWithResults, "#ga-no-result", "value").Should().BeEquivalentTo("False");
            GetAttribute(htmlWithoutResults, "#ga-no-result", "value").Should().BeEquivalentTo("True");
        }
        public void WhenSearchResultHasNoResultButThereAreProvidersInCountryShouldShowCountMessage()
        {
            var detail = new StandardResults();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults           = 0,
                PostCodeMissing        = false,
                StandardId             = "1",
                StandardName           = "Test standard name",
                StandardLevel          = 3,
                Hits                   = new List <StandardProviderResultItemViewModel>(),
                ActualPage             = 1,
                LastPage               = 1,
                ResultsToTake          = 10,
                PostCode               = "Test postcode",
                DeliveryModes          = new List <DeliveryModeViewModel>(),
                HasError               = false,
                TotalResultsForCountry = 3
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".total-providers-country").Should().NotBeEmpty();
            var expectedText = string.Format("view all ({0}) training providers for Test standard name, level 3 in England", model.TotalResultsForCountry);

            GetPartial(html, ".total-providers-country").Should().Be(expectedText);
        }
        public void WhenSearchResultHasResultButNoDeliveryModeHasResultsShouldShowFilterBox()
        {
            var detail = new StandardResults();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 10,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test standard name",
                Hits            = new List <StandardProviderResultItemViewModel>()
                {
                    new StandardProviderResultItemViewModel()
                },
                ActualPage    = 1,
                LastPage      = 1,
                ResultsToTake = 10,
                PostCode      = "Test postcode",
                DeliveryModes = new List <DeliveryModeViewModel>
                {
                    new DeliveryModeViewModel {
                        Value = "value"
                    }
                },
                HasError = false,
                TotalResultsForCountry = 3,
                AbsolutePath           = "www.abba.co.uk",
                SortOrder = "0"
            };

            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetHtmlElement(html, ".filter-box").Should().NotBeNull();
        }
        public void ShouldShowPercentageForAchievementRateResultWhenprovided()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "100PercentEmployer"
                },
                Address = new Address(),
                EmployerSatisfactionMessage = "87%",
                LearnerSatisfactionMessage  = "99.9%",
                AchievementRateMessage      = "42.5%",
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };

            var model = new ProviderStandardSearchResultViewModel()
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result-data-list dt", 4).Should().Be("Achievement rate:");
            GetPartial(html, ".result-data-list dd", 4).Should().Be("42.5%");
        }
        public void ShouldIncludeNationalTagIfItsANationalProvider()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName     = "Provider 1",
                NationalProvider = true,
                DeliveryModes    = new List <string> {
                    "100PercentEmployer"
                },
                Address = new Address(),
                EmployerSatisfactionMessage = "87%",
                LearnerSatisfactionMessage  = "99.9%",
                AchievementRateMessage      = "42.5%",
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };

            var model = new ProviderStandardSearchResultViewModel()
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result-title").Should().EndWith("National");
        }
        public void ShouldShowJustDistanceIfDeliveryModeIsNotEmployerLocation()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "BlockRelease"
                },
                Distance     = 1.2,
                Address      = new Address(),
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };

            var model = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result dl dt").Should().Be("Distance:");
            GetPartial(html, ".result dl dd").Should().Be("1.2 miles away");
        }
        public void ShouldShowDeliveryModesWithCorrectOrder()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "BlockRelease", "100PercentEmployer", "DayRelease"
                },
                Distance               = 1.2,
                Address                = new Address(),
                UkPrn                  = 1,
                LocationId             = 2,
                StandardCode           = 12,
                DeliveryOptionsMessage = "day release, block release, at your location"
            };

            var model = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".deliveryOptions").Should().Be("day release, block release, at your location");
        }
        public void WhenSearchResultHasNoResultsShouldNotShowNewSearchLink()
        {
            var detail = new StandardResults();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults           = 0,
                PostCodeMissing        = false,
                StandardId             = "1",
                StandardName           = "Test standard name",
                Hits                   = new List <StandardProviderResultItemViewModel>(),
                ActualPage             = 1,
                LastPage               = 1,
                ResultsToTake          = 10,
                PostCode               = "Test postcode",
                DeliveryModes          = new List <DeliveryModeViewModel>(),
                HasError               = false,
                TotalResultsForCountry = 3,
                AbsolutePath           = "www.abba.co.uk",
                SortOrder              = "0"
            };

            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetHtmlElement(html, ".new-postcode-search").Should().BeNull();
            GetPartial(html, ".new-postcode-search").Should().BeEmpty();
        }
        public void ShouldHaveAllFieldsInSearchResult()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "100PercentEmployer"
                },
                Distance     = 1,
                Address      = new Address(),
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };
            var item2 = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 2",
                DeliveryModes = new List <string> {
                    "BlockRelease"
                },
                Distance     = 1.2,
                Address      = new Address(),
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };

            var model = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item, item2
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result dl dt").Should().Be("Distance:");

            GetPartial(html, ".result dl dd").Should().Be("1 mile away");

            var secondResult = GetHtmlElement(html, ".result", 2);

            GetPartial(secondResult, "dl dd").Should().Be("1.2 miles away");
        }
        public void ShouldAddIntervalToResultsForGoogleAnalytics(int resultIndex, string expectedText, int acctualPage)
        {
            var searchPage = new StandardProviderInformation();

            var results = from ll in new StandardProviderResultItemViewModel[10] select new StandardProviderResultItemViewModel {
                ProviderName = "Test"
            };

            var model = new ProviderStandardSearchResultViewModel {
                TotalResults = 10, Hits = results, ActualPage = acctualPage, ResultsToTake = 10,
            };
            var html = searchPage.RenderAsHtml(model).ToAngleSharp();

            GetAttribute(html, "article a", "attr-ga-result-interval", resultIndex).Should().BeEquivalentTo(expectedText);
        }
        public void ShouldShowAnErrorWhenSomethingIsWrong()
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 0,
                PostCodeMissing = false,
                StandardId      = "1",
                Hits            = new List <StandardProviderResultItemViewModel>(),
                HasError        = true
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, "p").Should().Contain("There was a problem performing a search. Try again later.");
        }
        public void ShouldShowProviderLocationIfDeliveryModeDoesNotContainHundredEmployerLocation()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "BlockRelease"
                },
                Distance = 3,
                Address  = new Address
                {
                    Address1 = "Address 1",
                    Address2 = "Address 2",
                    County   = "County",
                    Postcode = "PostCode",
                    Town     = "Town"
                },
                LocationAddressLine = "Address 1, Address 2, Town, County, PostCode",
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12
            };

            var model = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result dl dt").Should().Be("Distance:");

            GetPartial(html, ".result dl dd").Should().Be("3 miles away");

            GetPartial(html, ".address").Should().Be("Address 1, Address 2, Town, County, PostCode");
        }
        public void ShouldntShowTrainingLocationIfDeliveryModeContainsEmployerLocationAndItIsTheOnlyOne()
        {
            var page = new StandardProviderInformation();
            var item = new StandardProviderResultItemViewModel
            {
                ProviderName  = "Provider 1",
                DeliveryModes = new List <string> {
                    "100PercentEmployer"
                },
                Address = new Address
                {
                    Address1 = "Address 1",
                    Address2 = "Address 2",
                    County   = "County",
                    Postcode = "PostCode",
                    Town     = "Town"
                },
                UkPrn        = 1,
                LocationId   = 2,
                StandardCode = 12,
                Distance     = 0
            };

            var model = new ProviderStandardSearchResultViewModel
            {
                TotalResults    = 1,
                PostCodeMissing = false,
                StandardId      = "1",
                StandardName    = "Test name",
                Hits            = new List <StandardProviderResultItemViewModel> {
                    item
                },
                HasError = false
            };
            var html = page.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".result dl dt").Should().Be("Distance:");

            GetPartial(html, ".result dl dd").Should().Be("0 miles away");

            GetPartial(html, ".address").Should().Be(string.Empty);
        }
예제 #15
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);
        }
예제 #16
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);
        }
        public void ShouldShowIndividualMessageWhenJustOneResultIsReturnedInAllCountry()
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults      = 1,
                PostCodeMissing   = false,
                StandardId        = "1",
                StandardName      = "Test name",
                StandardLevel     = 2,
                Hits              = new List <StandardProviderResultItemViewModel>(),
                HasError          = false,
                NationalProviders = new NationalProviderViewModel {
                    Count = 1
                },
                ShowAll = true
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, "p").Should().Contain("There is 1 training option for the Test name, level 2 apprenticeship in England.");
        }
        public void ShouldShowGeneralMessageWhenSeveralResultsAreReturned()
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults      = 7,
                PostCodeMissing   = false,
                StandardId        = "1",
                StandardName      = "Test name",
                StandardLevel     = 3,
                Hits              = new List <StandardProviderResultItemViewModel>(),
                HasError          = false,
                NationalProviders = new NationalProviderViewModel()
                {
                    Count = 1
                }
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, "p").Should().Contain("There are 7 training options for the Test name, level 3 apprenticeship.");
        }
        public void ShouldShowMessageInformingAboutNationalLabel()
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults      = 7,
                PostCodeMissing   = false,
                StandardId        = "1",
                StandardName      = "Test name",
                StandardLevel     = 3,
                Hits              = new List <StandardProviderResultItemViewModel>(),
                HasError          = false,
                NationalProviders = new NationalProviderViewModel {
                    Count = 1
                },
                ShowAll = true
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, "p", 3).Should().Contain("Results labelled National are training options run by providers who are willing to offer training across England.");
        }
        public void WhenSearchResultHasNoResultAndTheraAreNoProvidersInCountryShouldntShowProvidersMessage()
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults           = 0,
                PostCodeMissing        = false,
                StandardId             = "1",
                StandardName           = "Test standard name",
                Hits                   = new List <StandardProviderResultItemViewModel>(),
                ActualPage             = 1,
                LastPage               = 1,
                ResultsToTake          = 10,
                PostCode               = "Test postcode",
                DeliveryModes          = new List <DeliveryModeViewModel>(),
                HasError               = false,
                TotalResultsForCountry = 0
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".total-providers-country").Should().BeEmpty();
        }
        public void WhenSearchResultHasNoResultShouldShowUsefulInformationMessage()
        {
            var detail = new StandardResults();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults           = 0,
                PostCodeMissing        = false,
                StandardId             = "1",
                StandardName           = "Test standard name",
                Hits                   = new List <StandardProviderResultItemViewModel>(),
                ActualPage             = 1,
                LastPage               = 1,
                ResultsToTake          = 10,
                PostCode               = "Test postcode",
                DeliveryModes          = new List <DeliveryModeViewModel>(),
                HasError               = false,
                TotalResultsForCountry = 0
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, ".return-search-results").Should().Be("return to your apprenticeship training search results");
            GetPartial(html, ".start-again").Should().Be("start your job role or keyword search again");
        }
        public void ShouldHaveDataForGoogleAnalytic()
        {
            var searchPage     = new StandardResults();
            var nameOfStandard = "Name of standard";
            var level          = 2;
            var title          = $"{nameOfStandard}, level {level}";
            var postcode       = "N17";
            var model          = new ProviderStandardSearchResultViewModel
            {
                TotalResults  = 1,
                StandardName  = nameOfStandard,
                StandardLevel = level,
                PostCode      = postcode,
                Hits          = new StandardProviderResultItemViewModel [0],
                DeliveryModes = new List <DeliveryModeViewModel>(),
                SortOrder     = "0"
            };

            var html = searchPage.RenderAsHtml(model).ToAngleSharp();

            GetAttribute(html, "#ga-apprenticeship-title", "value").Should().BeEquivalentTo(title);
            GetAttribute(html, "#ga-postcode", "value").Should().BeEquivalentTo(postcode);
        }
예제 #23
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");
        }
예제 #24
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");
        }
        public void ShouldNotShowMessageInformingAboutNationalLabel(int totalResults, int nationalProviders)
        {
            var detail = new StandardSearchResultMessage();
            var model  = new ProviderStandardSearchResultViewModel
            {
                TotalResults      = totalResults,
                PostCodeMissing   = false,
                StandardId        = "1",
                StandardName      = "Test name",
                StandardLevel     = 3,
                PostCode          = "N17",
                Hits              = new List <StandardProviderResultItemViewModel>(),
                HasError          = false,
                NationalProviders = new NationalProviderViewModel {
                    Count = nationalProviders
                },
                ShowAll = true
            };
            var html = detail.RenderAsHtml(model).ToAngleSharp();

            GetPartial(html, "p", 2).Should().NotStartWith("Results labelled National are training providers");
            GetPartial(html, "p", 3).Should().NotStartWith("Results labelled National are training providers");
            GetPartial(html, "p", 3).Should().BeEmpty();
        }