public void ShouldShowDeliveryModesWithCorrectOrder() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 1", DeliveryModes = new List <string> { "blockrelease", "100PercentEmployer", "DayRelease" }, Distance = 1.2, Address = new Address(), UkPrn = 1, LocationId = 2, FrameworkId = "1", DeliveryOptionsMessage = "day release, block release, at your location" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { item }, HasError = false }; var html = page.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".deliveryOptions").Should().Be("day release, block release, at your location"); }
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 void ShouldShowDeliveryModesWhenThereIsJustOne() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 1", DeliveryModes = new List <string> { "BlockRelease" }, Distance = 1.2, Address = new Address(), UkPrn = 1, LocationId = 2, FrameworkId = "3", DeliveryOptionsMessage = "block release" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { item }, HasError = false }; var html = page.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".deliveryOptions").Should().Be("block release"); }
public void WhenSearchResultHasNoResultButThereAreProvidersInCountryShouldShowCountMessage() { var detail = new FrameworkResults(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test framework name", FrameworkLevel = 2, Hits = new List <FrameworkProviderResultItemViewModel>(), ActualPage = 1, LastPage = 1, ResultsToTake = 10, PostCode = "Test postcode", DeliveryModes = new List <DeliveryModeViewModel>(), HasError = false, TotalProvidersCountry = 3 }; var html = detail.RenderAsHtml(model).ToAngleSharp(); var expectedText = string.Format("view all ({0}) training providers for Test framework name, level 2 in England", model.TotalProvidersCountry); GetPartial(html, ".total-providers-country").Should().Be(expectedText); }
public void ShouldShowIndividualMessageWhenJustOneResultIsReturnedAndThereIsNoLevel() { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { Title = "Test name: Pathway test name", TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", PathwayName = "Pathway test name", Hits = new List <FrameworkProviderResultItemViewModel>(), HasError = false, NationalProviders = new NationalProviderViewModel() { Count = 1 } }; var html = detail.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".result-message p").Should().Contain("There is 1 training option for the Test name: Pathway test name, level 0 apprenticeship."); GetPartial(html, "p").Should().Contain("There is 1 training option for the Test name: Pathway test name, level 0 apprenticeship."); }
public void ShouldShowGeneralMessageWhenSeveralResultsAreReturnedInAllCountry() { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { Title = "Test name: Pathway test name", TotalResults = 7, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkLevel = 2, FrameworkName = "Test name", PathwayName = "Pathway test name", Hits = new List <FrameworkProviderResultItemViewModel>(), HasError = false, NationalProviders = new NationalProviderViewModel() { Count = 1 }, ShowAll = true }; var html = detail.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".result-message p").Should().Contain("There are 7 training options for the Test name: Pathway test name, level 2 apprenticeship in England."); }
public void WhenSearchResultHasNoResultsShouldNotShowNewSearchLink() { var detail = new FrameworkResults(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test framework name", Hits = new List <FrameworkProviderResultItemViewModel>(), ActualPage = 1, LastPage = 1, ResultsToTake = 10, PostCode = "Test postcode", DeliveryModes = new List <DeliveryModeViewModel> { new DeliveryModeViewModel() }, HasError = false, TotalProvidersCountry = 3, AbsolutePath = "www.abba.co.uk" }; var html = detail.RenderAsHtml(model).ToAngleSharp(); GetHtmlElement(html, ".new-postcode-search").Should().BeNull(); GetPartial(html, ".new-postcode-search").Should().BeEmpty(); }
public void ShouldShowJustDistanceIfDeliveryModeIsNotEmployerLocation() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 1", DeliveryModes = new List <string> { "BlockRelease" }, Distance = 1.2, Address = new Address(), LocationId = 2, UkPrn = 12, FrameworkId = "3" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { 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 ShouldShowTrainingLocationIfDeliveryModeHasLocationDifferentToEmployerLocation() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { UkPrn = 1, FrameworkCode = 123, PathwayCode = 321, Level = 4, MarketingName = "Marketing name test", ProviderMarketingInfo = "Provider marketing info test", ApprenticeshipMarketingInfo = "Apprenticeship marketing info test", Phone = "123456789", Email = "*****@*****.**", ContactUsUrl = "www.contactus.com", ApprenticeshipInfoUrl = "www.apprenticeshipinfourl.com", ProviderName = "Provider 1", DeliveryModes = new List <string> { "BlockRelease" }, Distance = 1, Website = "http://www.trainingprovider.co.uk", Address = new Address { Address1 = "Address 1", Address2 = "Address 2", County = "County", Postcode = "PostCode", Town = "Town" }, LocationAddressLine = "Address 1, Address 2, Town, County, PostCode", LocationId = 2, FrameworkId = "3" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { 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 mile away"); GetPartial(html, ".result dl dd", 2).Should().Be("Address 1, Address 2, Town, County, PostCode"); }
public void ShouldHaveAllFieldsInSearchResult() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 1", DeliveryModes = new List <string> { "100PercentEmployer" }, Distance = 0.3, Website = "http://www.trainingprovider.co.uk", Address = new Address(), LocationId = 2, UkPrn = 12, FrameworkId = "3" }; var item2 = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 2", DeliveryModes = new List <string> { "BlockRelease" }, Distance = 1.2, Address = new Address(), LocationId = 2, UkPrn = 12, FrameworkId = "3" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { 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("0.3 miles away"); var secondResult = GetHtmlElement(html, ".result", 2); GetPartial(secondResult, "dl dd").Should().Be("1.2 miles away"); }
public void ShouldShowAnErrorWhenSomethingIsWrong() { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, Hits = new List <FrameworkProviderResultItemViewModel>(), HasError = true }; var html = detail.RenderAsHtml(model).ToAngleSharp(); this.GetPartial(html, ".result-message p").Should().Contain("There was a problem performing a search. Try again later."); }
public void ShouldHaveDataForGoogleAnalytic() { var searchPage = new FrameworkResults(); var title = "This is a title, Level 3"; var postcode = "N17"; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, Title = title, PostCode = postcode, Hits = new FrameworkProviderResultItemViewModel[0] }; var html = searchPage.RenderAsHtml(model).ToAngleSharp(); GetAttribute(html, "#ga-apprenticeship-title", "value").Should().BeEquivalentTo(title); GetAttribute(html, "#ga-postcode", "value").Should().BeEquivalentTo(postcode); }
public void ShouldShowTrainingAddressIfDeliveryModeContainsEmployerLocationButIsNotTheOnlOne() { var page = new FrameworkProviderInformation(); var item = new FrameworkProviderResultItemViewModel { ProviderName = "Provider 1", DeliveryModes = new List <string> { "100PercentEmployer", "BlockRelease" }, Distance = 3, Website = "http://www.trainingprovider.co.uk", Address = new Address { Address1 = "Address 1", Address2 = "Address 2", County = "County", Postcode = "PostCode", Town = "Town" }, LocationAddressLine = "Address 1, Address 2, Town, County, PostCode", LocationId = 2, UkPrn = 12, FrameworkId = "3" }; var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", Hits = new List <FrameworkProviderResultItemViewModel> { 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 async Task FrameworkSearchResultsShouldReturnNotFoundStatusCodeIfTheFrameworkIsNotFound() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.ApprenticeshipNotFound }; 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.NotFound); }
public void ShouldAddIntervalToResultsForGoogleAnalytics(int resultIndex, string expectedText, int acctualPage) { var searchPage = new FrameworkProviderInformation(); var results = from ll in new FrameworkProviderResultItemViewModel[10] select new FrameworkProviderResultItemViewModel { ProviderName = "Test" }; var model = new ProviderFrameworkSearchResultViewModel { 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 ShouldShowZeroResultsMessageWhenThereAreNoResultsAndThereIsNoLevel() { var detail = new FrameworkResults(); var model = new ProviderFrameworkSearchResultViewModel { Title = "Test name: Pathway test name", TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkName = "Test name", PathwayName = "Pathway test name", PostCode = "Test postcode", Hits = new List <FrameworkProviderResultItemViewModel>(), HasError = false }; var html = detail.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".result-message").Should().Contain("Sorry, there are currently no training providers for Test name: Pathway test name, level 0 for 'TESTPOSTCODE'."); }
public void ShouldDetermineEmptyResultsForGoogleAnalytic() { var searchPage = new FrameworkResults(); var modelWithResults = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, Hits = new[] { new FrameworkProviderResultItemViewModel() } }; var modelWithoutResults = new ProviderFrameworkSearchResultViewModel { TotalResults = 1, Hits = new FrameworkProviderResultItemViewModel[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 ShouldShowMessageInformingAboutNationalLabel() { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 7, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test name", FrameworkLevel = 3, Hits = new List <FrameworkProviderResultItemViewModel>(), 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 WhenSearchResultHasPaginationAndIsTheLastPageShouldShowOnlyBackPageLink() { var detail = new FrameworkResults(); var model = new ProviderFrameworkSearchResultViewModel { Title = "Test name: Pathway test name", TotalResults = 30, PostCodeMissing = false, FrameworkId = "1", FrameworkCode = 2, FrameworkLevel = 2, FrameworkName = "Test name", PathwayName = "Pathway test name", Hits = new List <FrameworkProviderResultItemViewModel> { new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel(), new FrameworkProviderResultItemViewModel() }, 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 WhenSearchResultHasNoResultAndTheraAreNoProvidersInCountryShouldntShowProvidersMessage() { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test framework name", Hits = new List <FrameworkProviderResultItemViewModel>(), ActualPage = 1, LastPage = 1, ResultsToTake = 10, PostCode = "Test postcode", DeliveryModes = new List <DeliveryModeViewModel>(), HasError = false, TotalProvidersCountry = 0 }; var html = detail.RenderAsHtml(model).ToAngleSharp(); GetPartial(html, ".total-providers-country").Should().BeEmpty(); }
public async Task SearchResultsShouldRedirectToSearchEntryPageIfPostCodeIsNotSet() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.PostCodeInvalidFormat }; var mockUrlHelper = new Mock <UrlHelper>(); mockUrlHelper.Setup(x => x.Action("SearchForFrameworkProviders", "Apprenticeship", It.IsAny <object>())).Returns("someurl"); 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)) .WithUrl(mockUrlHelper.Object); var result = await controller.FrameworkResults(new ProviderSearchQuery()); result.Should().BeOfType <RedirectResult>(); var viewResult = (RedirectResult)result; viewResult.Url.Should().Be("someurl"); }
public void WhenSearchResultHasNoResultShouldShowUsefulInformationMessage() { var detail = new FrameworkResults(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = 0, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test framework name", Hits = new List <FrameworkProviderResultItemViewModel>(), ActualPage = 1, LastPage = 1, ResultsToTake = 10, PostCode = "Test postcode", DeliveryModes = new List <DeliveryModeViewModel>(), HasError = false, TotalProvidersCountry = 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 ShouldNotShowMessageInformingAboutNationalLabel(int totalResults, int nationalProviders) { var detail = new FrameworkSearchResultMessage(); var model = new ProviderFrameworkSearchResultViewModel { TotalResults = totalResults, PostCodeMissing = false, FrameworkId = "1", FrameworkName = "Test name", FrameworkLevel = 3, PostCode = "N17", Hits = new List <FrameworkProviderResultItemViewModel>(), 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(); }
public async Task SearchResultsShouldRedirectToLatPageIfParameterExtendsUpperBound() { var stubSearchResponse = new ProviderSearchResponse { Success = true, StatusCode = ProviderSearchResponseCodes.PageNumberOutOfUpperBound }; var mockUrlHelper = new Mock <UrlHelper>(); mockUrlHelper.Setup(x => x.Action("FrameworkResults", "Provider", It.IsAny <RouteValueDictionary>())).Returns("someurl"); 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)) .WithUrl(mockUrlHelper.Object); var result = await controller.FrameworkResults(new ProviderSearchQuery()); result.Should().BeOfType <RedirectResult>(); var viewResult = (RedirectResult)result; viewResult.Url.Should().Be("someurl"); }