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");
        }
Esempio n. 2
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);
        }
        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");
        }
Esempio n. 14
0
        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();
        }
Esempio n. 21
0
        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();
        }
Esempio n. 24
0
        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");
        }