public void ShowOtherVenuesAndDatesTest(bool otherVenuesExists)
        {
            // Arrange
            var courseDetailsCourseDetails = new _MVC_Views_CourseDetails_OtherDatesAndVenues_cshtml();
            var courseDetailsViewModel     = new CourseDetailsViewModel();
            var courseDetails = new CourseDetails();

            courseDetailsViewModel.CourseDetails.VenueDetails = new Venue();
            if (otherVenuesExists)
            {
                courseDetailsViewModel.CourseDetails.Oppurtunities = new System.Collections.Generic.List <Oppurtunity>();
                var otherDatesAndVenues = new Oppurtunity();
                courseDetailsViewModel.CourseDetails.Oppurtunities.Add(otherDatesAndVenues);
                courseDetailsViewModel.CourseDetails.Oppurtunities.FirstOrDefault().VenueName = nameof(CourseDetails.Oppurtunities);
            }
            else
            {
                courseDetailsViewModel.CourseDetails.Oppurtunities        = null;
                courseDetailsViewModel.NoOtherDateOrVenueAvailableMessage = nameof(CourseDetailsViewModel.NoOtherDateOrVenueAvailableMessage);
            }

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

            // Assert
            if (otherVenuesExists)
            {
                htmlDocument.DocumentNode.Descendants("td")
                .Any(div => div.Attributes["class"].Value.Contains("govuk-table__cell") &&
                     div.InnerText.Contains(courseDetailsViewModel.CourseDetails.Oppurtunities.FirstOrDefault().VenueName)).Should().BeTrue();
            }
            else
            {
                htmlDocument.DocumentNode.Descendants("td")
                .Any(div => div.Attributes["class"].Value.Contains("govuk-table__cell") &&
                     div.InnerText.Contains(courseDetailsViewModel.NoOtherDateOrVenueAvailableMessage)).Should().BeTrue();
            }
        }
        public void Dfc9563NoOtherDatesTextTests(bool otherDatesAvailable)
        {
            // Arrange
            var otherDatesView = new _MVC_Views_CourseDetails_OtherDatesAndVenues_cshtml();
            var viewModel      = new CourseDetailsViewModel
            {
                NoOtherDateOrVenueAvailableMessage = nameof(CourseDetailsViewModel.NoOtherDateOrVenueAvailableMessage),
                CourseDetails =
                {
                    VenueDetails  = otherDatesAvailable ? new Venue() : null,
                    Oppurtunities = otherDatesAvailable
                        ? new List <Oppurtunity>
                    {
                        new Oppurtunity
                        {
                            StartDate     = DateTime.Now,
                            OppurtunityId = nameof(Oppurtunity.OppurtunityId),
                            VenueName     = nameof(Oppurtunity.VenueName),           VenueUrl= nameof(Oppurtunity.VenueName)
                        }
                    }
                        : Enumerable.Empty <Oppurtunity>().ToList()
                }
            };

            // Act
            var htmlDocument = otherDatesView.RenderAsHtml(viewModel);

            // Assert
            if (otherDatesAvailable)
            {
                AssertTagInnerTextValueDoesNotExist(htmlDocument, viewModel.NoOtherDateOrVenueAvailableMessage, "td");
            }
            else
            {
                AssertTagInnerTextValue(htmlDocument, viewModel.NoOtherDateOrVenueAvailableMessage, "td");
            }
        }
        public void OtherVenuesStartdatesTest(bool startDateIsNull)
        {
            //Arrange
            var startDate = DateTime.Now;

            var courseDetailsCourseDetails = new _MVC_Views_CourseDetails_OtherDatesAndVenues_cshtml();
            var courseDetailsViewModel     = new CourseDetailsViewModel();
            var courseDetails = new CourseDetails();

            courseDetailsViewModel.CourseDetails.VenueDetails  = new Venue();
            courseDetailsViewModel.CourseDetails.Oppurtunities = new System.Collections.Generic.List <Oppurtunity>();
            var otherDatesAndVenues = new Oppurtunity();

            if (!startDateIsNull)
            {
                otherDatesAndVenues.StartDate = startDate;
            }

            courseDetailsViewModel.CourseDetails.Oppurtunities.Add(otherDatesAndVenues);

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

            var expectedStartDate = $"{string.Format("{0:dd MMMM yyyy}", startDate)}";
            var dateCell          = htmlDocument.DocumentNode.SelectNodes("//table[1]/tbody/tr[2]/td[2]").FirstOrDefault().InnerText;

            // Assert
            if (startDateIsNull)
            {
                dateCell.Should().NotContain(expectedStartDate);
            }
            else
            {
                dateCell.Should().Contain(expectedStartDate);
            }
        }