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