public void ShowProviderDetailsEmailAddressTest(bool providerDetailsExist)
        {
            // Arrange
            var courseDetailsProviderDetails = new _MVC_Views_CourseDetails_Provider_cshtml();
            var providerDetails        = new ProviderDetails();
            var courseDetailsViewModel = new CourseDetailsViewModel();

            courseDetailsViewModel.CourseDetails.ProviderDetails = providerDetails;
            if (providerDetailsExist)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.EmailAddress = nameof(CourseDetails.ProviderDetails.EmailAddress);
            }

            // Act
            var htmlDocument = courseDetailsProviderDetails.RenderAsHtml(courseDetailsViewModel);

            // Assert
            if (providerDetailsExist)
            {
                htmlDocument.DocumentNode.Descendants("a")
                .Any(a => a.Attributes["class"].Value.Contains("govuk-link") &&
                     a.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmailAddress)).Should().BeTrue();
            }
            else
            {
                htmlDocument.DocumentNode.Descendants("a")
                .Any(a => a.Attributes["class"].Value.Contains("govuk-link") &&
                     a.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmailAddress)).Should().BeFalse();
            }
        }
        public void ShowProviderDetailsPhoneNumberTest(bool providerDetailsExist)
        {
            // Arrange
            var courseDetailsProviderDetails = new _MVC_Views_CourseDetails_Provider_cshtml();
            var providerDetails        = new ProviderDetails();
            var courseDetailsViewModel = new CourseDetailsViewModel();

            courseDetailsViewModel.CourseDetails.ProviderDetails = providerDetails;
            if (providerDetailsExist)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.PhoneNumber = nameof(CourseDetails.ProviderDetails.PhoneNumber);
            }
            else
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.PhoneNumber = null;
            }

            // Act
            var htmlDocument = courseDetailsProviderDetails.RenderAsHtml(courseDetailsViewModel);

            // Assert
            if (providerDetailsExist)
            {
                htmlDocument.DocumentNode.Descendants("li")
                .Any(li => li.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.PhoneNumber)).Should().BeTrue();
            }
            else
            {
                htmlDocument.DocumentNode.Descendants("li")
                .Any(li => li.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.PhoneNumber)).Should().BeFalse();
            }
        }
        public void ShowProviderDetailsNameTest(bool providerDetailsExist)
        {
            // Arrange
            var courseDetailsProviderDetails = new _MVC_Views_CourseDetails_Provider_cshtml();
            var providerDetails        = new ProviderDetails();
            var courseDetailsViewModel = new CourseDetailsViewModel();

            courseDetailsViewModel.CourseDetails.ProviderDetails = providerDetails;
            if (providerDetailsExist)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.Name = nameof(CourseDetails.ProviderDetails.Name);
            }
            else
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.Name = null;
            }

            // Act
            var htmlDocument = courseDetailsProviderDetails.RenderAsHtml(courseDetailsViewModel);

            // Assert
            if (providerDetailsExist)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body-lead") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.Name)).Should().BeTrue();
            }
            else
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body-lead") &&
                     p.InnerText.Contains(nameof(courseDetailsViewModel.CourseDetails.ProviderDetails.Name))).Should().BeFalse();
            }
        }
        public void ShowProviderFEDetailsTest(bool showFEDetails)
        {
            // Arrange
            var courseDetailsProviderDetails = new _MVC_Views_CourseDetails_Provider_cshtml();
            var providerDetails        = new ProviderDetails();
            var courseDetailsViewModel = new CourseDetailsViewModel();

            courseDetailsViewModel.CourseDetails.ProviderDetails = providerDetails;
            courseDetailsViewModel.ShouldShowFeChoices           = showFEDetails;
            courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction = 0;
            if (showFEDetails)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfactionSpecified = true;
            }
            else
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfactionSpecified = false;
            }

            // Act
            var htmlDocument = courseDetailsProviderDetails.RenderAsHtml(courseDetailsViewModel);

            // Assert
            if (showFEDetails)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction.ToString())).Should().BeTrue();
            }
            else
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(nameof(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction))).Should().BeFalse();
            }
        }
        public void ShowHideLearnerAndEmployerSatisfationTest(bool learnerSatisfactionSpecified, bool employeeSatisfactionSpecified)
        {
            // Arrange
            var courseDetailsProviderDetails = new _MVC_Views_CourseDetails_Provider_cshtml();
            var courseDetailsViewModel       = new CourseDetailsViewModel();

            courseDetailsViewModel.ShouldShowFeChoices = true;
            var providerDetails = new ProviderDetails
            {
                LearnerSatisfactionSpecified  = learnerSatisfactionSpecified,
                EmployerSatisfactionSpecified = employeeSatisfactionSpecified
            };

            providerDetails.Name = nameof(courseDetailsViewModel.CourseDetails.ProviderDetails.Name);
            courseDetailsViewModel.CourseDetails.ProviderDetails = providerDetails;
            var dummyLearnerSatisfaction  = 1.0;
            var dummyEmployeeSatisfaction = 1.0;

            if (learnerSatisfactionSpecified && employeeSatisfactionSpecified)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction  = dummyLearnerSatisfaction;
                courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction = dummyEmployeeSatisfaction;
            }
            else if (learnerSatisfactionSpecified && !employeeSatisfactionSpecified)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction = dummyLearnerSatisfaction;
            }
            else if (!learnerSatisfactionSpecified && employeeSatisfactionSpecified)
            {
                courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction = dummyEmployeeSatisfaction;
            }

            // Act
            var htmlDocument = courseDetailsProviderDetails.RenderAsHtml(courseDetailsViewModel);

            // Assert
            if (learnerSatisfactionSpecified && employeeSatisfactionSpecified)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction.ToString())).Should().BeTrue();

                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction.ToString())).Should().BeTrue();
            }
            else if (learnerSatisfactionSpecified && !employeeSatisfactionSpecified)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction.ToString())).Should().BeTrue();

                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction.ToString())).Should().BeFalse();
            }
            else if (!learnerSatisfactionSpecified && employeeSatisfactionSpecified)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction.ToString())).Should().BeFalse();

                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction.ToString())).Should().BeTrue();
            }
            else if (!learnerSatisfactionSpecified && !employeeSatisfactionSpecified)
            {
                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.LearnerSatisfaction.ToString())).Should().BeFalse();

                htmlDocument.DocumentNode.Descendants("p")
                .Any(p => p.Attributes["class"].Value.Contains("govuk-body govuk-!-font-size-48 govuk-!-font-weight-bold govuk-!-margin-bottom-2") &&
                     p.InnerText.Contains(courseDetailsViewModel.CourseDetails.ProviderDetails.EmployerSatisfaction.ToString())).Should().BeFalse();
            }
        }