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 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 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 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 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 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");
        }