Пример #1
0
        private MediatorResponse <ApprenticeshipVacancyDetailViewModel> GetDetails(ApprenticeshipVacancyDetailViewModel vacancyDetailViewModel)
        {
            if (vacancyDetailViewModel == null)
            {
                return(GetMediatorResponse <ApprenticeshipVacancyDetailViewModel>(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound));
            }

            if (vacancyDetailViewModel.HasError())
            {
                return(GetMediatorResponse(ApprenticeshipSearchMediatorCodes.Details.VacancyHasError, vacancyDetailViewModel, vacancyDetailViewModel.ViewModelMessage, UserMessageLevel.Warning));
            }

            if ((!vacancyDetailViewModel.CandidateApplicationStatus.HasValue && vacancyDetailViewModel.VacancyStatus != VacancyStatuses.Live) ||
                (vacancyDetailViewModel.CandidateApplicationStatus.HasValue && vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable))
            {
                // Candidate has no application for the vacancy and the vacancy is no longer live OR
                // candidate has an application (at least a draft) but the vacancy is no longer available.
                return(GetMediatorResponse <ApprenticeshipVacancyDetailViewModel>(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound));
            }

            var distance          = UserDataProvider.Pop(CandidateDataItemNames.VacancyDistance);
            var lastViewedVacancy = UserDataProvider.PopLastViewedVacancy();

            if (HasToPopulateDistance(vacancyDetailViewModel.Id, distance, lastViewedVacancy))
            {
                vacancyDetailViewModel.Distance = distance;
                UserDataProvider.Push(CandidateDataItemNames.VacancyDistance, distance);
            }

            UserDataProvider.PushLastViewedVacancyId(vacancyDetailViewModel.Id, VacancyType.Apprenticeship);

            return(GetMediatorResponse(ApprenticeshipSearchMediatorCodes.Details.Ok, vacancyDetailViewModel));
        }
Пример #2
0
        public void ShowPostedDate(int daysAgo)
        {
            // Arrange.
            var postedDate         = DateTime.Today.AddDays(-daysAgo);
            var friendlyPostedDate = postedDate.ToFriendlyDaysAgo();

            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                PostedDate     = postedDate
            };

            var httpContext = CreateMockContext();

            // Act.
            var view = details.RenderAsHtml(httpContext, vacancyDetailViewModel);

            // Assert.
            var element = view.GetElementbyId("vacancy-posted-date");

            element.Should().NotBeNull();
            element.InnerText.Should().Be(friendlyPostedDate);
        }
Пример #3
0
        public void ShowHideSaveVacancyLink(bool?isCandidateActivated)
        {
            // Arrange.
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
            };

            details.ViewBag.IsCandidateActivated = isCandidateActivated;

            // Act.
            var view = details.RenderAsHtml(vacancyDetailViewModel);

            // Assert.
            var element = view.GetElementbyId("save-vacancy-link");

            if (isCandidateActivated.HasValue && isCandidateActivated.Value)
            {
                element.Should().NotBeNull();
            }
            else
            {
                element.Should().BeNull();
            }
        }
Пример #4
0
        public ApprenticeshipVacancyDetailViewModel Build()
        {
            var model = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyStatus = _vacancyStatus
            };

            return(model);
        }
Пример #5
0
        public void HideFutureProspects()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel()
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-future-prospects").Should().BeNull();
        }
Пример #6
0
        public void HideRealityCheck()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel()
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-reality-check").Should().BeNull();
        }
Пример #7
0
        public void Ok()
        {
            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Live
            };

            ApprenticeshipVacancyProvider.Setup(p => p.GetVacancyDetailViewModel(It.IsAny <Guid?>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);

            var response = Mediator.Details(Id, null);

            response.AssertCode(ApprenticeshipSearchMediatorCodes.Details.Ok, true);
        }
Пример #8
0
        public void ShowFutureProspects()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress  = new AddressViewModel(),
                FutureProspects = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-future-prospects").InnerText.Should().Be(SomeString);
        }
Пример #9
0
        public void VacancyIsUnavailable_CandidateNotLoggedIn()
        {
            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Unavailable
            };

            ApprenticeshipVacancyProvider.Setup(
                p => p.GetVacancyDetailViewModel(It.IsAny <Guid?>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);

            var response = Mediator.Details(Id, null);

            response.AssertCodeAndMessage(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound);
        }
Пример #10
0
        public void ShowRealityCheck()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                RealityCheck   = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-reality-check").InnerText.Should().Be(SomeString);
        }
Пример #11
0
        public void DontShowDistanceItThereIsNoDistanceToShow()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress      = new AddressViewModel(),
                VacancyLocationType = ApprenticeshipLocationType.NonNational
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-distance").Should().BeNull();
        }
        public void Ok()
        {
            //Arrange
            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel();

            ApprenticeshipVacancyProvider.Setup(p => p.IncrementClickThroughFor(It.IsAny <int>()))
            .Returns(vacancyDetailViewModel);

            //Act
            var response = Mediator.RedirectToExternalWebsite(Id);

            //Assert
            response.AssertCode(ApprenticeshipSearchMediatorCodes.RedirectToExternalWebsite.Ok, true);
        }
Пример #13
0
        public void ShouldNotShowSearchReturnUrlLink()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel()
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("lnk-return-search-results").Should().BeNull("Return to search results should not be shown.");
            view.GetElementbyId("lnk-find-apprenticeship").Should().NotBeNull("Find an apprenticeship link should be shown.");
        }
Пример #14
0
        public void ShouldNotSeeAnyInfoIfModelHasError()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress   = new AddressViewModel(),
                ViewModelMessage = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-description").Should().BeNull("Should not appear any vacancy information");
        }
Пример #15
0
        public void VacancyIsUnavailable_CandidateLoggedInAndHasPreviouslyAppliedForVacancy()
        {
            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                CandidateApplicationStatus = ApplicationStatuses.Submitted,
                VacancyStatus = VacancyStatuses.Unavailable
            };

            ApprenticeshipVacancyProvider.Setup(
                p => p.GetVacancyDetailViewModel(It.IsAny <Guid?>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);

            var response = Mediator.Details(Id, Guid.NewGuid());

            response.AssertCodeAndMessage(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound);
        }
Пример #16
0
        public void HideRecruitmentAgencyIfItsAnonymous()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                IsRecruitmentAgencyAnonymous = true
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("recruitment-agency-name")
            .Should().BeNull("The recruitment agency should not be shown if it's anonymous.");
        }
Пример #17
0
        public void ShowDistance()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress      = new AddressViewModel(),
                VacancyLocationType = ApprenticeshipLocationType.NonNational,
                Distance            = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-distance").InnerText.Should().Be(SomeString + " miles");
        }
 private static ApprenticeshipSummary GetVacancy(ApprenticeshipVacancyDetailViewModel model)
 {
     return(new ApprenticeshipSummary
     {
         Id = model.Id,
         ClosingDate = model.ClosingDate,
         Description = model.Description,
         EmployerName = model.EmployerName,
         Location = new GeoPoint
         {
             Longitude = model.VacancyAddress.GeoPoint.Longitude,
             Latitude = model.VacancyAddress.GeoPoint.Latitude
         },
         Title = model.Title,
     });
 }
Пример #19
0
        public void HideShowBeforeApplyIfApplyingViaEmployerWebsite()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress          = new AddressViewModel(),
                ApplyViaEmployerWebsite = true
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("before-apply")
            .Should()
            .BeNull("Before apply should not be shown if the user has to apply via employer's website");
        }
Пример #20
0
        public void HideOtherInformation()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress   = new AddressViewModel(),
                OtherInformation = NoValue
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("other-information")
            .Should()
            .BeNull("Other information should not be shown if the value is not set.");
        }
Пример #21
0
        public void ShowOtherInformation()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress   = new AddressViewModel(),
                OtherInformation = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("other-information").InnerText
            .Should()
            .Contain(SomeString, "Other information should be shown if the value is set.");
        }
Пример #22
0
        public void ShowWellFormedEmployerWebSite()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                IsWellFormedEmployerWebsiteUrl = true,
                EmployerWebsite = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-employer-website").Attributes["href"].Value.Should().Be(SomeString,
                                                                                                 string.Format("The employer website url should be shown and should be {0}", SomeString));
        }
Пример #23
0
        public void ShowProviderContact()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                Contact        = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-provider-contact").InnerText
            .Should()
            .Contain(SomeString, "The provider contact should be shown if the value is set.");
        }
Пример #24
0
        public void HideRecruitmentAgencyIfItHasNotSet()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                IsRecruitmentAgencyAnonymous = false,
                RecruitmentAgency            = NoValue
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("recruitment-agency-name")
            .Should().BeNull("The recruitment agency should not be shown if the value is not set.");
        }
Пример #25
0
        public void HideMapIfVacancyTypeIsNational()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress      = new AddressViewModel(),
                VacancyLocationType = ApprenticeshipLocationType.National
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-map")
            .Should()
            .BeNull("The map should not be shown if the vacancy is National");
        }
Пример #26
0
        public void VacancyHasError()
        {
            const string message = "The vacancy has an error";

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                ViewModelMessage = message,
                VacancyStatus    = VacancyStatuses.Live
            };

            ApprenticeshipVacancyProvider.Setup(p => p.GetVacancyDetailViewModel(It.IsAny <Guid?>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);

            var response = Mediator.Details(Id, null);

            response.AssertMessage(ApprenticeshipSearchMediatorCodes.Details.VacancyHasError, message, UserMessageLevel.Warning, true);
        }
Пример #27
0
        public void ShouldShowSearchReturnUrlLink()
        {
            const string someUrl = "findapprenticeship.service.gov.uk";
            var          details = new Details();

            details.ViewBag.SearchReturnUrl = someUrl;

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel()
            };
            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("lnk-return-search-results").Should().NotBeNull("Return to search results should be shown.");
            view.GetElementbyId("lnk-return-search-results").Attributes["href"].Value.Should().Be(someUrl);
        }
Пример #28
0
        public void HideProviderContact()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                Contact        = NoValue
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-provider-contact")
            .Should()
            .BeNull("The provider contact should not be shown if the value is not set.");
        }
Пример #29
0
        public void ShowMap()
        {
            var details = new Details();

            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyAddress      = new AddressViewModel(),
                VacancyLocationType = ApprenticeshipLocationType.NonNational
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-map")
            .Should()
            .NotBeNull("The map should be shown");
        }
Пример #30
0
        public void PopulateDistance()
        {
            var vacancyDetailViewModel = new ApprenticeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Live
            };

            ApprenticeshipVacancyProvider.Setup(p => p.GetVacancyDetailViewModel(It.IsAny <Guid?>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);

            UserDataProvider.Setup(udp => udp.Pop(CandidateDataItemNames.VacancyDistance)).Returns(VacancyDistance);
            UserDataProvider.Setup(udp => udp.Pop(CandidateDataItemNames.LastViewedVacancy)).Returns(VacancyType.Apprenticeship + "_" + Convert.ToString(Id));

            var response = Mediator.Details(Id, null);

            response.AssertCode(ApprenticeshipSearchMediatorCodes.Details.Ok, true);
        }