private static ApprenticeshipApplicationDetail CreateApplicationDetail( Candidate candidate, ApprenticeshipVacancyDetail vacancyDetails, ApplicationStatuses applicationStatus, ApplicationTemplate applicationTemplate) { return(new ApprenticeshipApplicationDetail { EntityId = Guid.NewGuid(), Status = applicationStatus, DateCreated = DateTime.UtcNow, CandidateId = candidate.EntityId, CandidateDetails = Mapper.Map <RegistrationDetails, RegistrationDetails>(candidate.RegistrationDetails), VacancyStatus = vacancyDetails.VacancyStatus, Vacancy = new ApprenticeshipSummary { Id = vacancyDetails.Id, VacancyReference = vacancyDetails.VacancyReference, Title = vacancyDetails.Title, EmployerName = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousEmployerName : vacancyDetails.EmployerName, IsPositiveAboutDisability = vacancyDetails.IsPositiveAboutDisability, StartDate = vacancyDetails.StartDate, ClosingDate = vacancyDetails.ClosingDate, Description = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousAboutTheEmployer : vacancyDetails.EmployerDescription, NumberOfPositions = vacancyDetails.NumberOfPositions, Location = null, // NOTE: no equivalent in legacy vacancy details. VacancyLocationType = vacancyDetails.VacancyLocationType, }, // Populate apprenticeshipApplication template with candidate's most recent information. CandidateInformation = applicationTemplate }); }
public void ShouldTryParseWageDescriptionIfWageTypeIsText() { var vacancyDetail = new ApprenticeshipVacancyDetail { Wage = new Wage(WageType.LegacyText, null, null, null, "123.45678", WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); WagePresenter.GetDisplayAmount(model.Wage.Type, model.Wage.Amount, model.Wage.AmountLowerBound, model.Wage.AmountUpperBound, model.Wage.Text, model.Wage.HoursPerWeek, null).Should().Be("£123.46"); }
public void ShouldShowWageIfWageTypeIsWeekly() { var vacancyDetail = new ApprenticeshipVacancyDetail { Wage = new Wage(WageType.LegacyWeekly, 101.19m, null, null, null, WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); const string expectedWage = "£101.19"; model.Should().NotBeNull(); WagePresenter.GetDisplayAmount(model.Wage.Type, model.Wage.Amount, model.Wage.AmountLowerBound, model.Wage.AmountUpperBound, model.Wage.Text, model.Wage.HoursPerWeek, null).Should().Be(expectedWage); }
public void ShouldShowWageDescriptionIfWageTypeIsText() { var vacancyDetail = new ApprenticeshipVacancyDetail { WageType = WageType.Text, WageDescription = "Competetive" }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.Wage.Should().Be(vacancyDetail.WageDescription); }
public void ShouldReturnTheEmployerWebsiteWithHttpIfItAlreadyHasIt() { var vacancyDetail = new ApprenticeshipVacancyDetail { EmployerWebsite = "http://wwww.someweb.com" }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.EmployerWebsite.Should().StartWith("http://"); model.IsWellFormedEmployerWebsiteUrl.Should().Be(true); }
public void ShouldNotAnonymiseEmployerNameIfEmployerHasNotOptedForAnonymity() { var vacancyDetail = new ApprenticeshipVacancyDetail { EmployerName = "Acme Corp", IsEmployerAnonymous = false }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.EmployerName.Should().Be(vacancyDetail.EmployerName); }
public void ShouldReturnRawStringIfVacancyUrlIsNotWellFormed() { var vacancyDetail = new ApprenticeshipVacancyDetail { VacancyUrl = "www.somedomain.co.uk / www.anotherdomain.co.uk" }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.VacancyUrl.Should().Be(vacancyDetail.VacancyUrl); model.IsWellFormedVacancyUrl.Should().Be(false); }
public void ShouldReturnTheVacancyUrlWithHttpsIfItStartsWithIt() { var vacancyDetail = new ApprenticeshipVacancyDetail { VacancyUrl = "https://wwww.someweb.com" }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.VacancyUrl.Should().StartWith("https://"); model.IsWellFormedVacancyUrl.Should().Be(true); }
public void ShouldNotAnonymiseEmployerNameIfEmployerHasNotOptedForAnonymity() { var vacancyDetail = new ApprenticeshipVacancyDetail { EmployerName = "Acme Corp", IsEmployerAnonymous = false, Wage = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.EmployerName.Should().Be(vacancyDetail.EmployerName); }
public void ShouldReturnRawStringIfVacancyUrlIsNotWellFormed() { var vacancyDetail = new ApprenticeshipVacancyDetail { VacancyUrl = "www.somedomain.co.uk / www.anotherdomain.co.uk", Wage = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.VacancyUrl.Should().Be(vacancyDetail.VacancyUrl); model.IsWellFormedVacancyUrl.Should().Be(false); }
public void ShouldReturnTheVacancyUrlWithHttpIfItDoesntHaveIt() { var vacancyDetail = new ApprenticeshipVacancyDetail { VacancyUrl = "wwww.someweb.com", Wage = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.VacancyUrl.Should().StartWith("http://"); model.IsWellFormedVacancyUrl.Should().Be(true); }
public void ShouldReturnTheEmployerWebsiteWithHttpsIfItStartsWithIt() { var vacancyDetail = new ApprenticeshipVacancyDetail { EmployerWebsite = "https://wwww.someweb.com", Wage = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null) }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail); model.Should().NotBeNull(); model.EmployerWebsite.Should().StartWith("https://"); model.IsWellFormedEmployerWebsiteUrl.Should().Be(true); }
public void ShouldShowWageIfWageTypeIsWeekly() { var vacancyDetail = new ApprenticeshipVacancyDetail { WageType = WageType.Weekly, Wage = 101.19m }; var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail); const string expectedWage = "£101.19"; model.Should().NotBeNull(); model.Wage.Should().Be(expectedWage); }
private static ApprenticeshipApplicationDetail CreateApplicationDetail(Candidate candidate, ApprenticeshipVacancyDetail vacancyDetails) { return(new ApprenticeshipApplicationDetail { EntityId = Guid.NewGuid(), Status = ApplicationStatuses.Draft, DateCreated = DateTime.Now, CandidateId = candidate.EntityId, CandidateDetails = Mapper.Map <RegistrationDetails, RegistrationDetails>(candidate.RegistrationDetails), VacancyStatus = vacancyDetails.VacancyStatus, Vacancy = new ApprenticeshipSummary { Id = vacancyDetails.Id, VacancyReference = vacancyDetails.VacancyReference, Title = vacancyDetails.Title, EmployerName = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousEmployerName : vacancyDetails.EmployerName, StartDate = vacancyDetails.StartDate, ClosingDate = vacancyDetails.ClosingDate, Description = vacancyDetails.Description, Location = null, // NOTE: no equivalent in legacy vacancy details. VacancyLocationType = vacancyDetails.VacancyLocationType }, // Populate apprenticeshipApplication template with candidate's most recent information. CandidateInformation = new ApplicationTemplate { EducationHistory = candidate.ApplicationTemplate.EducationHistory, Qualifications = candidate.ApplicationTemplate.Qualifications, WorkExperience = candidate.ApplicationTemplate.WorkExperience, AboutYou = candidate.ApplicationTemplate.AboutYou }, }); }
public static ApprenticeshipVacancyDetail GetApprenticeshipVacancyDetail(Vacancy vacancy, Employer employer, Provider provider, ProviderSite providerSite, IList <Category> categories, ILogService logService) { //Manually mapping rather than using automapper as the two enties are significantly different var subcategory = vacancy.GetSubCategory(categories); LogSubCategory(vacancy, logService, subcategory); var detail = new ApprenticeshipVacancyDetail { Id = vacancy.VacancyId, VacancyReference = vacancy.VacancyReferenceNumber.GetVacancyReference(), Title = vacancy.Title, Description = vacancy.ShortDescription, FullDescription = vacancy.LongDescription, //SubCategory = vacancy., StartDate = vacancy.PossibleStartDate ?? DateTime.MinValue, ClosingDate = vacancy.ClosingDate ?? DateTime.MinValue, PostedDate = vacancy.DateQAApproved ?? DateTime.MinValue, //TODO: Where should this come from? InterviewFromDate = DateTime.MinValue, Wage = vacancy.Wage, WorkingWeek = vacancy.WorkingWeek, HoursPerWeek = vacancy.Wage.HoursPerWeek, OtherInformation = vacancy.OtherInformation, FutureProspects = vacancy.FutureProspects, //TODO: Where from? //VacancyOwner = vacancy., //VacancyManager = vacancy., //LocalAuthority = vacancy., NumberOfPositions = vacancy.NumberOfPositions ?? 0, RealityCheck = vacancy.ThingsToConsider, Created = vacancy.CreatedDateTime, VacancyStatus = vacancy.Status.GetVacancyStatuses(), EmployerName = employer.FullName, AnonymousEmployerName = vacancy.EmployerAnonymousName, AnonymousAboutTheEmployer = vacancy.AnonymousAboutTheEmployer, IsEmployerAnonymous = !string.IsNullOrWhiteSpace(vacancy.EmployerAnonymousName), EmployerDescription = string.IsNullOrWhiteSpace(vacancy.AnonymousAboutTheEmployer) ? vacancy.EmployerDescription : vacancy.AnonymousAboutTheEmployer, EmployerWebsite = vacancy.EmployerWebsiteUrl, ApplyViaEmployerWebsite = vacancy.OfflineVacancy ?? false, VacancyUrl = vacancy.OfflineApplicationUrl, ApplicationInstructions = vacancy.OfflineApplicationInstructions, IsPositiveAboutDisability = employer.IsPositiveAboutDisability, ExpectedDuration = vacancy.ExpectedDuration, VacancyAddress = GetVacancyAddress(vacancy.Address), //TODO: How is this captured in RAA? //IsRecruitmentAgencyAnonymous = vacancy., //TODO: How is this captured in RAA? //IsSmallEmployerWageIncentive = vacancy., SupplementaryQuestion1 = vacancy.FirstQuestion, SupplementaryQuestion2 = vacancy.SecondQuestion, //TODO: How is this captured in RAA? RecruitmentAgency = providerSite.TradingName, ProviderName = provider.TradingName, TradingName = employer.TradingName, //ProviderDescription = vacancy., Contact = vacancy.GetContactInformation(providerSite), TrainingToBeProvided = vacancy.TrainingProvided, //TODO: How is this captured in RAA? //ContractOwner = vacancy., //DeliveryOrganisation = vacancy., //IsNasProvider = vacancy., PersonalQualities = vacancy.PersonalQualities, QualificationRequired = vacancy.DesiredQualifications, SkillsRequired = vacancy.DesiredSkills, VacancyLocationType = vacancy.VacancyLocationType == VacancyLocationType.Nationwide ? ApprenticeshipLocationType.National : ApprenticeshipLocationType.NonNational, ApprenticeshipLevel = vacancy.ApprenticeshipLevel.GetApprenticeshipLevel(), SubCategory = subcategory.FullName, TrainingType = vacancy.TrainingType.GetTrainingType(), EditedInRaa = vacancy.EditedInRaa, AdditionalLocationInformation = vacancy.AdditionalLocationInformation }; return(detail); }