Esempio n. 1
0
        private MediatorResponse <TraineeshipVacancyDetailViewModel> GetDetails(TraineeshipVacancyDetailViewModel vacancyDetailViewModel)
        {
            if (vacancyDetailViewModel == null || vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable)
            {
                return(GetMediatorResponse <TraineeshipVacancyDetailViewModel>(TraineeshipSearchMediatorCodes.Details.VacancyNotFound));
            }

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

            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.Traineeship);

            return(GetMediatorResponse(TraineeshipSearchMediatorCodes.Details.Ok, vacancyDetailViewModel));
        }
        public void VacancyUnavailable()
        {
            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Unavailable
            };

            var mediator = GetMediator(vacancyDetailViewModel);
            var response = mediator.Details(VacancyId, null);

            response.AssertCode(TraineeshipSearchMediatorCodes.Details.VacancyNotFound, false);
        }
        public void HideFutureProspects()
        {
            var details = new Details();

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

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-future-prospects").Should().BeNull();
        }
        public void ShouldNotSeeAnyInfoIfModelHasError()
        {
            var details = new Details();

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

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-info").Should().BeNull("Should not appear any vacancy information");
        }
        public void ShowFutureProspects()
        {
            var details = new Details();

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

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-future-prospects").InnerText.Should().Be(SomeString);
        }
        public void ShowDistance()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                Distance       = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-distance").InnerText.Should().Be(SomeString + " miles");
        }
        public void DontShowDistanceItThereIsNoDistanceToShow()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                Distance       = NoValue
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-distance").Should().BeNull();
        }
        public void ShouldNotShowSearchReturnUrlLink()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                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-traineeship").Should().NotBeNull("Find a traineeship link should be shown.");
        }
        public void ShowNotSpecifiedExpectedDuration()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress   = new AddressViewModel(),
                ExpectedDuration = NoValue
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-expected-duration").InnerText
            .Should()
            .Be("Not specified");
        }
        public void ShowExpectedDuration()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress   = new AddressViewModel(),
                ExpectedDuration = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-expected-duration").InnerText
            .Should()
            .Be(SomeString);
        }
        public void ShouldShowSearchReturnUrlLink()
        {
            const string someUrl = "findapprenticeship.service.gov.uk";
            var          details = new Details();

            details.ViewBag.SearchReturnUrl = someUrl;

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                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 HideOtherInformation()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                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.");
        }
Esempio n. 13
0
 private static TraineeshipSummary GetVacancy(TraineeshipVacancyDetailViewModel model)
 {
     return new TraineeshipSummary
     {
         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 ShowWellFormedEmployerWebSite()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                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));
        }
Esempio n. 15
0
        public void ShouldNotShowClosingDateForExpiredVacancy()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Expired,
                ClosingDate   = DateTime.Today.AddDays(-42)
            };

            // Act.
            var view = index.RenderAsHtml(vm);

            // Assert.
            view.GetElementbyId("vacancy-closing-date").Should().BeNull();
        }
        public void ShowOtherInformation()
        {
            var details = new Details();

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

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacany-other-information").InnerText
            .Should()
            .Contain(SomeString, "Other information should be shown if the value is set.");
        }
Esempio n. 17
0
        public void VacancyStatusExpiredTest()
        {
            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Expired
            };

            var traineeshipVacancyProvider = new Mock <ITraineeshipVacancyProvider>();

            traineeshipVacancyProvider.Setup(x => x.GetVacancyDetailViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);
            var accountMediator = new AccountMediatorBuilder().With(traineeshipVacancyProvider).Build();

            var response = accountMediator.TraineeshipVacancyDetails(Guid.NewGuid(), 42);

            response.Code.Should().Be(AccountMediatorCodes.VacancyDetails.Available);
            response.Message.Should().BeNull();
        }
        public void VacancyHasError()
        {
            const string message = "The vacancy has an error";

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

            var mediator = GetMediator(vacancyDetailViewModel);

            var response = mediator.Details(VacancyId, null);

            response.AssertMessage(TraineeshipSearchMediatorCodes.Details.VacancyHasError, message,
                                   UserMessageLevel.Warning, true);
        }
        public void ShowMalformedEmployerWebSite()
        {
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress = new AddressViewModel(),
                IsWellFormedEmployerWebsiteUrl = false,
                EmployerWebsite = SomeString
            };

            var view = details.RenderAsHtml(vacancyDetailViewModel);

            view.GetElementbyId("vacancy-employer-website")
            .Should()
            .BeNull("The employer website url should not be shown");
        }
Esempio n. 20
0
        public void ShouldAllowCandidateToReturnToMyApplicationsForExpiredVacancy()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                CandidateApplicationStatus = ApplicationStatuses.Submitted,
                VacancyStatus = VacancyStatuses.Expired
            };

            // Act.
            var httpContext = CreateMockContext(true);
            var view        = index.RenderAsHtml(httpContext, vm);

            // Assert.
            view.GetElementbyId("return-to-my-applications").Should().NotBeNull();
        }
Esempio n. 21
0
        public void ShouldShowDateAppliedIfCandidateHasSubmittedApplication()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                CandidateApplicationStatus = ApplicationStatuses.Submitted,
                DateApplied = DateTime.Today.AddDays(-1)
            };

            // Act.
            var httpContext = CreateMockContext(true);
            var view        = index.RenderAsHtml(httpContext, vm);

            // Assert.
            view.GetElementbyId("date-applied").Should().NotBeNull();
        }
Esempio n. 22
0
        public void ShouldAllowCandidateToSignInToApplyForLiveVacancy()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Live
            };

            // Act.
            var view = index.RenderAsHtml(vm);

            // Assert.
            var elem = view.GetElementbyId("apply-button");

            elem.Should().NotBeNull();
            elem.InnerHtml.Should().Be("Sign in to apply");
        }
Esempio n. 23
0
        public void ShouldAllowCandidateToApplyForLiveVacancy()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Live
            };

            // Act.
            var httpContext = CreateMockContext(true);
            var view        = index.RenderAsHtml(httpContext, vm);

            // Assert.
            var elem = view.GetElementbyId("apply-button");

            elem.Should().NotBeNull();
            elem.InnerHtml.Should().Be("Apply for traineeship");
        }
Esempio n. 24
0
        public void ErrorTest()
        {
            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                ViewModelMessage = "Has error"
            };

            var traineeshipVacancyProvider = new Mock <ITraineeshipVacancyProvider>();

            traineeshipVacancyProvider.Setup(x => x.GetVacancyDetailViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);
            var accountMediator = new AccountMediatorBuilder().With(traineeshipVacancyProvider).Build();

            var response = accountMediator.TraineeshipVacancyDetails(Guid.NewGuid(), 42);

            response.Code.Should().Be(AccountMediatorCodes.VacancyDetails.Error);
            response.Message.Should().NotBeNull();
            response.Message.Text.Should().Be(vacancyDetailViewModel.ViewModelMessage);
            response.Message.Level.Should().Be(UserMessageLevel.Error);
        }
Esempio n. 25
0
        public void VacancyStatusUnavailableTest()
        {
            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyStatus = VacancyStatuses.Unavailable
            };

            var traineeshipVacancyProvider = new Mock <ITraineeshipVacancyProvider>();

            traineeshipVacancyProvider.Setup(x => x.GetVacancyDetailViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(vacancyDetailViewModel);
            var accountMediator = new AccountMediatorBuilder().With(traineeshipVacancyProvider).Build();

            var response = accountMediator.TraineeshipVacancyDetails(Guid.NewGuid(), 42);

            response.Code.Should().Be(AccountMediatorCodes.VacancyDetails.Unavailable);
            response.Message.Should().NotBeNull();
            response.Message.Text.Should().Be(MyApplicationsPageMessages.ApprenticeshipNoLongerAvailable);
            response.Message.Level.Should().Be(UserMessageLevel.Warning);
        }
        public void ShowNumberOfPositions(int numberOfPositions)
        {
            // Arrange.
            var details = new Details();

            var vacancyDetailViewModel = new TraineeshipVacancyDetailViewModel
            {
                VacancyAddress    = new AddressViewModel(),
                NumberOfPositions = numberOfPositions
            };

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

            // Assert.
            var element = view.GetElementbyId("number-of-positions");

            element.Should().NotBeNull();
            element.InnerText.Should().Contain(numberOfPositions.ToString(CultureInfo.InvariantCulture));
        }
        private ITraineeshipSearchMediator GetMediator(TraineeshipVacancyDetailViewModel vacancyDetailViewModel)
        {
            var configurationManager = new Mock <IConfigurationService>();

            configurationManager.Setup(x => x.Get <CommonWebConfiguration>())
            .Returns(new CommonWebConfiguration {
                VacancyResultsPerPage = 5
            });
            var searchProvider             = new Mock <ISearchProvider>();
            var traineeshipVacancyProvider = new Mock <ITraineeshipVacancyProvider>();
            var candidateServiceProvider   = new Mock <ICandidateServiceProvider>();

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

            var userDataProvider = GetUserDataProvider();

            return(GetMediator(configurationManager.Object, searchProvider.Object, userDataProvider.Object,
                               traineeshipVacancyProvider.Object, candidateServiceProvider.Object));
        }
Esempio n. 28
0
        public void ShouldShowViewApplicationLinkIfCandidateHasSubmittedApplication()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                Id = 42,
                CandidateApplicationStatus = ApplicationStatuses.Submitted,
                DateApplied = DateTime.Today.AddDays(-1)
            };

            // Act.
            var httpContext = CreateMockContext(true);
            var view        = index.RenderAsHtml(httpContext, vm);

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

            element.Should().NotBeNull();
            element.OuterHtml.Should().Contain("traineeship/view/" + vm.Id);
        }
Esempio n. 29
0
        public void ShouldAllowCandidateToApplyViaEmployerWebsiteWithBadlyFormedUrl()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                ApplyViaEmployerWebsite = true,
                IsWellFormedVacancyUrl  = false,
                VacancyUrl = "Bad URL"
            };

            // Act.
            var view = index.RenderAsHtml(vm);

            // Assert.
            view.GetElementbyId("external-employer-website").Should().BeNull();

            var elem = view.GetElementbyId("external-employer-raw-vacancy-url");

            elem.Should().NotBeNull();
            elem.InnerHtml.ShouldBeEquivalentTo(vm.VacancyUrl);
        }
Esempio n. 30
0
        public void ShouldAllowCandidateToApplyViaEmployerWebsiteWithWellFormedUrl()
        {
            // Arrange.
            var index = new Apply();
            var vm    = new TraineeshipVacancyDetailViewModel
            {
                ApplyViaEmployerWebsite = true,
                IsWellFormedVacancyUrl  = true,
                VacancyUrl = "http://www.example.com"
            };

            // Act.
            var view = index.RenderAsHtml(vm);

            // Assert.
            var link = view.GetElementbyId("external-employer-website");

            link.Should().NotBeNull();
            link.GetAttributeValue("href", vm.VacancyUrl);

            view.GetElementbyId("external-employer-raw-vacancy-url").Should().BeNull();
        }