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)); }
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); }
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(); } }
public ApprenticeshipVacancyDetailViewModel Build() { var model = new ApprenticeshipVacancyDetailViewModel { VacancyStatus = _vacancyStatus }; return(model); }
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(); }
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(); }
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); }
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); }
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); }
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); }
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); }
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."); }
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"); }
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); }
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."); }
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, }); }
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"); }
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."); }
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."); }
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)); }
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."); }
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."); }
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"); }
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); }
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); }
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."); }
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"); }
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); }