public async Task Arrange() { var autoFixture = new Fixture(); _request = autoFixture.Create <ViewDraftApprenticeshipRequest>(); _draftApprenticeship = autoFixture.Create <GetDraftApprenticeshipResponse>(); _course = autoFixture.Create <TrainingProgramme>(); _commitmentsApiClient = new Mock <ICommitmentsApiClient>(); _commitmentsApiClient .Setup(x => x.GetTrainingProgramme(_draftApprenticeship.CourseCode, It.IsAny <CancellationToken>())) .ReturnsAsync(new GetTrainingProgrammeResponse { TrainingProgramme = _course }); _commitmentsApiClient.Setup(x => x.GetDraftApprenticeship(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_draftApprenticeship); _authorizationService = new Mock <IAuthorizationService>(); _mapper = new ViewDraftApprenticeshipViewModelMapper(_commitmentsApiClient.Object, _authorizationService.Object); _result = await _mapper.Map(_request) as ViewDraftApprenticeshipViewModel; }
public void AndSingleApprenticeshipThenApprenticeshipsOverFundingLimitIsCalculatedCorrectly( DateTime?apprenticeshipStartDate, decimal apprenticeshipCost, DateTime?fundingPeriodFrom, DateTime?fundingPeriodTo, int fundingCap, int expectedApprenticeshipsOverFundingLimit) { var apprenticeships = new[] { new ApprenticeshipListItemViewModel { StartDate = apprenticeshipStartDate, Cost = apprenticeshipCost } }; var trainingProgram = new TrainingProgramme { FundingPeriods = new List <TrainingProgrammeFundingPeriod> { new TrainingProgrammeFundingPeriod { EffectiveFrom = fundingPeriodFrom, EffectiveTo = fundingPeriodTo, FundingCap = fundingCap } }, EffectiveFrom = fundingPeriodFrom, EffectiveTo = fundingPeriodTo }; var group = new ApprenticeshipListItemGroupViewModel(apprenticeships, trainingProgram); Assert.AreEqual(expectedApprenticeshipsOverFundingLimit, group.ApprenticeshipsOverFundingLimit); }
public void SetUp() { _singleApprenticeship = new[] { new ApprenticeshipListItemViewModel { StartDate = new DateTime(2020, 2, 2), Cost = 500 } }; _testTrainingProgramme = new TrainingProgramme { FundingPeriods = new List <TrainingProgrammeFundingPeriod> { new TrainingProgrammeFundingPeriod { EffectiveFrom = new DateTime(2020, 2, 1), EffectiveTo = new DateTime(2020, 3, 1), FundingCap = TestTrainingProgrammeFundingCap } }, EffectiveFrom = new DateTime(2020, 2, 1), EffectiveTo = new DateTime(2020, 3, 1) }; }
public ConfirmViewModelMapperFixture() { Fixture fixture = new Fixture(); request = fixture.Create <ConfirmRequest>(); request.StartDate = "012020"; request.EndDate = "112020"; getApprenticeshipResponse = fixture.Create <GetApprenticeshipResponse>(); trainingProgramme = fixture.Create <TrainingProgramme>(); accountLegalEntityResponse = fixture.Create <AccountLegalEntityResponse>(); priceEpisodesResponse = new GetPriceEpisodesResponse { PriceEpisodes = new List <GetPriceEpisodesResponse.PriceEpisode> { new GetPriceEpisodesResponse.PriceEpisode { Cost = 100, FromDate = DateTime.UtcNow } } }; var commitmentAiClient = new Mock <ICommitmentsApiClient>(); commitmentAiClient.Setup(x => x.GetApprenticeship(request.ApprenticeshipId, It.IsAny <CancellationToken>())).ReturnsAsync(() => getApprenticeshipResponse); commitmentAiClient.Setup(x => x.GetAccountLegalEntity(request.AccountLegalEntityId, It.IsAny <CancellationToken>())).ReturnsAsync(() => accountLegalEntityResponse); commitmentAiClient.Setup(x => x.GetPriceEpisodes(request.ApprenticeshipId, It.IsAny <CancellationToken>())).ReturnsAsync(() => priceEpisodesResponse); commitmentAiClient .Setup(y => y.GetTrainingProgramme(getApprenticeshipResponse.CourseCode, CancellationToken.None)) .ReturnsAsync(() => new GetTrainingProgrammeResponse { TrainingProgramme = trainingProgramme }); _sut = new ConfirmViewModelMapper(commitmentAiClient.Object, Mock.Of <ILogger <ConfirmViewModelMapper> >()); }
/// <summary> /// If all apprenticeships share the same Funding Cap, this is it. /// If they have different funding caps, or there is no trainingprogram or apprenticeships, /// or there is not enough data to calculate the funding cap for each apprenticeship, this is null /// </summary> private int?CalculateCommonFundingCap() { if (TrainingProgramme == null || !Apprenticeships.Any()) { return(null); } if (Apprenticeships.Any(a => !a.StartDate.HasValue)) { return(null); } var firstFundingCap = TrainingProgramme.FundingCapOn(Apprenticeships.First().StartDate.Value); // check for magic 0, which means unable to calculate a funding cap (e.g. date out of bounds) if (firstFundingCap == 0) { return(null); } if (Apprenticeships.Skip(1).Any(a => TrainingProgramme.FundingCapOn(a.StartDate.Value) != firstFundingCap)) { return(null); } return(firstFundingCap); }
/// <summary> /// If all apprenticeships share the same Funding Cap, this is it. /// If they have different funding caps, or there is no trainingprogram or apprenticeships, /// or there is not enough data to calculate the funding cap for each apprenticeship, this is null /// </summary> private int?CalculateCommonFundingCap() { if (TrainingProgramme == null || !Apprenticeships.Any()) { return(null); } if (!IsLinkedToChangeOfPartyRequest && Apprenticeships.Any(a => !a.StartDate.HasValue)) { return(null); } int firstFundingCap = IsLinkedToChangeOfPartyRequest ? TrainingProgramme.FundingCapOn(Apprenticeships.First().OriginalStartDate.Value) : TrainingProgramme.FundingCapOn(Apprenticeships.First().StartDate.Value); // check for magic 0, which means unable to calculate a funding cap (e.g. date out of bounds) if (firstFundingCap == 0) { return(null); } if (Apprenticeships.Skip(1).Any(a => TrainingProgramme.FundingCapOn(a.StartDate.Value) != firstFundingCap)) { return(null); } return(firstFundingCap); }
public void AndNoApprenticeshipsThenThereAreNoApprenticeshipsOverFundingLimit() { var trainingProgram = new TrainingProgramme(); var group = new ApprenticeshipListItemGroupViewModel(new ApprenticeshipListItemViewModel[0], trainingProgram); Assert.AreEqual(0, group.ApprenticeshipsOverFundingLimit); }
public void Then_The_Fields_Are_Correctly_Mapped(TrainingProgramme source) { //Arrange var actual = (GetTrainingProgrammeResponse)source; //Assert actual.Should().BeEquivalentTo(source); }
/// <remarks> /// ApprenticeshipsOverFundingLimit and CommonFundingCap are only guaraneteed to be correct if the ctor's params are not mutated after instantiation or on another thread during contruction /// </remarks> public ApprenticeshipListItemGroupViewModel(IList <ApprenticeshipListItemViewModel> apprenticeships, TrainingProgramme trainingProgramme = null) { TrainingProgramme = trainingProgramme; Apprenticeships = apprenticeships; // calculating up-front assumes apprenticeships list and training program are not mutated after being passed to ctor ApprenticeshipsOverFundingLimit = CalculateApprenticeshipsOverFundingLimit(); CommonFundingCap = CalculateCommonFundingCap(); }
/// <remarks> /// ApprenticeshipsOverFundingLimit and CommonFundingCap are only guaraneteed to be correct if the ctor's params are not mutated after instantiation or on another thread during contruction /// </remarks> public ApprenticeshipListItemGroupViewModel(IList <ApprenticeshipListItemViewModel> apprenticeships, TrainingProgramme trainingProgramme = null, bool isLinkedToChangeOfPartyRequest = false) { TrainingProgramme = trainingProgramme; Apprenticeships = apprenticeships; IsLinkedToChangeOfPartyRequest = isLinkedToChangeOfPartyRequest; // calculating up-front assumes apprenticeships list and training program are not mutated after being passed to ctor ApprenticeshipsOverFundingLimit = CalculateApprenticeshipsOverFundingLimit(); CommonFundingCap = CalculateCommonFundingCap(); }
public ConfirmEditApprenticeshipRequestToConfirmEditViewModelMapperTestsFixture() { var autoFixture = new Fixture(); _apprenticeshipResponse = autoFixture.Build <GetApprenticeshipResponse>() .With(x => x.CourseCode, "ABC") .With(x => x.Version, "1.0") .With(x => x.StartDate, new DateTime(2020, 1, 1)) .With(x => x.EndDate, new DateTime(2021, 1, 1)) .With(x => x.DateOfBirth, new DateTime(1990, 1, 1)) .Create(); source = new EditApprenticeshipRequestViewModel(); source.ApprenticeshipId = _apprenticeshipResponse.Id; source.CourseCode = _apprenticeshipResponse.CourseCode; source.FirstName = _apprenticeshipResponse.FirstName; source.LastName = _apprenticeshipResponse.LastName; source.Email = _apprenticeshipResponse.Email; source.DateOfBirth = new CommitmentsV2.Shared.Models.DateModel(_apprenticeshipResponse.DateOfBirth); source.Cost = 1000; source.EmployerReference = _apprenticeshipResponse.EmployerReference; source.StartDate = new CommitmentsV2.Shared.Models.MonthYearModel(_apprenticeshipResponse.StartDate.Month.ToString() + _apprenticeshipResponse.StartDate.Year); source.EndDate = new CommitmentsV2.Shared.Models.MonthYearModel(_apprenticeshipResponse.EndDate.Month.ToString() + _apprenticeshipResponse.EndDate.Year); _priceEpisodeResponse = autoFixture.Build <GetPriceEpisodesResponse>() .With(x => x.PriceEpisodes, new List <PriceEpisode> { new PriceEpisode { Cost = 1000, FromDate = DateTime.Now.AddMonths(-1), ToDate = null } }) .Create(); _standardSummary = autoFixture.Create <TrainingProgramme>(); _standardSummary.EffectiveFrom = new DateTime(2018, 1, 1); _standardSummary.EffectiveTo = new DateTime(2022, 1, 1); _standardSummary.FundingPeriods = SetPriceBand(1000); _mockCommitmentsApiClient = new Mock <ICommitmentsApiClient>(); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeship(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_apprenticeshipResponse); _mockCommitmentsApiClient.Setup(c => c.GetPriceEpisodes(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_priceEpisodeResponse); _mockCommitmentsApiClient.Setup(t => t.GetTrainingProgrammeVersionByCourseCodeAndVersion(source.CourseCode, source.Version, It.IsAny <CancellationToken>())) .ReturnsAsync(new GetTrainingProgrammeResponse { TrainingProgramme = _standardSummary }); _encodingService = new Mock <IEncodingService>(); _encodingService.Setup(x => x.Decode(It.IsAny <string>(), EncodingType.ApprenticeshipId)).Returns(_apprenticeshipResponse.Id); _encodingService.Setup(x => x.Decode(It.IsAny <string>(), EncodingType.AccountId)).Returns(_apprenticeshipResponse.EmployerAccountId); _mapper = new ConfirmEditApprenticeshipRequestToConfirmEditViewModelMapper(_mockCommitmentsApiClient.Object, _encodingService.Object); }
public AddDraftApprenticeshipCommandToDraftApprenticeshipDetailsMapperTestsFixture() { Fixture = new Fixture(); Command = Fixture.Create <AddDraftApprenticeshipCommand>(); AuthorizationService = new Mock <IAuthorizationService>(); TrainingProgramme = new TrainingProgramme("TEST", "TEST", ProgrammeType.Framework, DateTime.MinValue, DateTime.MaxValue); TrainingProgrammeLookup = new Mock <ITrainingProgrammeLookup>(); Mapper = new AddDraftApprenticeshipCommandToDraftApprenticeshipDetailsMapper(AuthorizationService.Object, TrainingProgrammeLookup.Object); TrainingProgrammeLookup.Setup(l => l.GetTrainingProgramme(It.IsAny <string>())).ReturnsAsync(TrainingProgramme); }
public static int FundingCapOn(this TrainingProgramme course, DateTime date) { if (!IsActive(course.EffectiveTo, course.EffectiveFrom, date)) { return(0); } var applicableFundingPeriod = course.FundingPeriods.FirstOrDefault(x => IsActive(x.EffectiveTo, x.EffectiveFrom, date)); return(applicableFundingPeriod?.FundingCap ?? 0); }
public DetailsViewModelMapperTestsFixture() { _autoFixture = new Fixture(); Cohort = _autoFixture.Build <GetCohortResponse>().Without(x => x.TransferSenderId).Without(x => x.ChangeOfPartyRequestId).Create(); AccountLegalEntityResponse = _autoFixture.Create <AccountLegalEntityResponse>(); LegalEntityViewModel = _autoFixture.Create <LegalEntityViewModel>(); var draftApprenticeships = CreateDraftApprenticeshipDtos(_autoFixture); _autoFixture.Register(() => draftApprenticeships); DraftApprenticeshipsResponse = _autoFixture.Create <GetDraftApprenticeshipsResponse>(); CommitmentsApiClient = new Mock <ICommitmentsApiClient>(); CommitmentsApiClient.Setup(x => x.GetCohort(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(Cohort); CommitmentsApiClient.Setup(x => x.GetDraftApprenticeships(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(DraftApprenticeshipsResponse); CommitmentsApiClient.Setup(x => x.GetAccountLegalEntity(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(AccountLegalEntityResponse); AccountApiClient = new Mock <IAccountApiClient>(); AccountApiClient.Setup(x => x.GetLegalEntity(It.IsAny <string>(), It.IsAny <long>())).ReturnsAsync(LegalEntityViewModel); _fundingPeriods = new List <TrainingProgrammeFundingPeriod> { new TrainingProgrammeFundingPeriod { EffectiveFrom = _startFundingPeriod, EffectiveTo = _endFundingPeriod, FundingCap = 1000 }, new TrainingProgrammeFundingPeriod { EffectiveFrom = _startFundingPeriod.AddMonths(1), EffectiveTo = _endFundingPeriod.AddMonths(1), FundingCap = 500 } }; _trainingProgramme = new TrainingProgramme { EffectiveFrom = DefaultStartDate, EffectiveTo = DefaultStartDate.AddYears(1), FundingPeriods = _fundingPeriods }; CommitmentsApiClient.Setup(x => x.GetTrainingProgramme(It.Is <string>(c => !string.IsNullOrEmpty(c)), CancellationToken.None)) .ReturnsAsync(new GetTrainingProgrammeResponse { TrainingProgramme = _trainingProgramme }); CommitmentsApiClient.Setup(x => x.GetTrainingProgramme("no-course", CancellationToken.None)) .ThrowsAsync(new RestHttpClientException(new HttpResponseMessage(HttpStatusCode.NotFound) { RequestMessage = new HttpRequestMessage(), ReasonPhrase = "Url not found" }, "Course not found")); EncodingService = new Mock <IEncodingService>(); SetEncodingOfApprenticeIds(); Mapper = new DetailsViewModelMapper(CommitmentsApiClient.Object, EncodingService.Object, AccountApiClient.Object); Source = _autoFixture.Create <DetailsRequest>(); }
public async Task Then_Null_Is_Returned_From_The_Service_When_There_Is_No_Course( GetTrainingProgrammeQuery query, TrainingProgramme result, [Frozen] Mock <ITrainingProgrammeLookup> service, GetTrainingProgrammeQueryHandler handler) { service.Setup(x => x.GetTrainingProgramme(query.Id)).ReturnsAsync((TrainingProgramme)null); var actual = await handler.Handle(query, CancellationToken.None); actual.TrainingProgramme.Should().BeNull(); }
public async Task Then_If_An_Exception_Is_Thrown_Then_Null_Is_Returned( GetTrainingProgrammeQuery query, TrainingProgramme result, [Frozen] Mock <ITrainingProgrammeLookup> service, GetTrainingProgrammeQueryHandler handler) { service.Setup(x => x.GetTrainingProgramme(query.Id)).ThrowsAsync(new Exception("Course not found")); var actual = await handler.Handle(query, CancellationToken.None); actual.TrainingProgramme.Should().BeNull(); }
public static int FundingCapOn(this TrainingProgramme course, DateTime date) { //todo: would probably be better to return int? null or throw if out of range if (!course.IsActiveOn(date)) { return(0); } var applicableFundingPeriod = course.FundingPeriods.FirstOrDefault(x => GetStatusOn(x.EffectiveFrom, x.EffectiveTo, date) == TrainingProgrammeStatus.Active); return(applicableFundingPeriod?.FundingCap ?? 0); }
public async Task Then_The_Data_Is_Retrieved_From_The_Service( GetTrainingProgrammeQuery query, TrainingProgramme result, [Frozen] Mock <ITrainingProgrammeLookup> service, GetTrainingProgrammeQueryHandler handler) { service.Setup(x => x.GetTrainingProgramme(query.Id)).ReturnsAsync(result); var actual = await handler.Handle(query, CancellationToken.None); actual.TrainingProgramme.Should().BeEquivalentTo(result); }
public void ThenIfWithinCourseEffectiveRangeThenIsActive(DateTime?courseStart, DateTime?courseEnd, DateTime effectiveDate, bool expectIsActive) { //Arrange var course = new TrainingProgramme { EffectiveFrom = courseStart, EffectiveTo = courseEnd }; //Act var result = course.IsActiveOn(effectiveDate); //Assert Assert.AreEqual(expectIsActive, result); }
public void ThenTheCourseEffectiveDatesAreUsedToDetermineTheStatus(DateTime?courseStart, DateTime?courseEnd, DateTime effectiveDate, bool expectStatus) { //Arrange var course = new TrainingProgramme { EffectiveFrom = courseStart, EffectiveTo = courseEnd }; //Act var result = course.IsActiveOn(effectiveDate); //Assert Assert.AreEqual(expectStatus, result); }
private async Task <bool> HasNewerVersions(TrainingProgramme trainingProgramme) { if (trainingProgramme.ProgrammeType == ProgrammeType.Standard) { var newerVersionsResponse = await _commitmentsApiClient.GetNewerTrainingProgrammeVersions(trainingProgramme.StandardUId); if (newerVersionsResponse?.NewerVersions != null && newerVersionsResponse.NewerVersions.Count() > 0) { return(true); } } return(false); }
public void Arrange() { var autoFixture = new Fixture(); _request = autoFixture.Build <ChangeOfProviderRequest>() .With(x => x.NewStartMonth, 1) .With(x => x.NewStartYear, 2020) .With(x => x.NewEndMonth, 2) .With(x => x.NewEndYear, 2022) .With(x => x.NewPrice, 1500) .Create(); _apprenticeshipResponse = autoFixture.Build <GetApprenticeshipResponse>() .With(x => x.CourseCode, "ABC") .With(x => x.StartDate, new DateTime(2020, 1, 1)) .With(x => x.StartDate, new DateTime(2021, 1, 1)) .Create(); _priceEpisodeResponse = autoFixture.Build <GetPriceEpisodesResponse>() .With(x => x.PriceEpisodes, new List <PriceEpisode> { new PriceEpisode { Cost = 1000, ToDate = DateTime.Now.AddMonths(-1) }, new PriceEpisode { Cost = 2000, ToDate = null } }) .Create(); _standardSummary = autoFixture.Create <TrainingProgramme>(); _standardSummary.EffectiveFrom = new DateTime(2018, 1, 1); _standardSummary.EffectiveTo = new DateTime(2022, 1, 1); _standardSummary.FundingPeriods = SetPriceBand(1000); _mockCommitmentsApiClient = new Mock <ICommitmentsApiClient>(); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeship(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_apprenticeshipResponse); _mockCommitmentsApiClient.Setup(c => c.GetPriceEpisodes(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_priceEpisodeResponse); _mockCommitmentsApiClient.Setup(t => t.GetTrainingProgramme(_apprenticeshipResponse.CourseCode, It.IsAny <CancellationToken>())) .ReturnsAsync(new GetTrainingProgrammeResponse { TrainingProgramme = _standardSummary }); _mapper = new ConfirmDetailsAndSendViewModelMapper(_mockCommitmentsApiClient.Object); }
private static DataLockViewModel MapDataLockStatus(DataLock dataLock, TrainingProgramme training) { return(new DataLockViewModel { DataLockEventDatetime = dataLock.DataLockEventDatetime, PriceEpisodeIdentifier = dataLock.PriceEpisodeIdentifier, ApprenticeshipId = dataLock.ApprenticeshipId, IlrTrainingCourseCode = dataLock.IlrTrainingCourseCode, IlrTrainingCourseName = training.Name, IlrActualStartDate = dataLock.IlrActualStartDate, IlrEffectiveFromDate = dataLock.IlrEffectiveFromDate, IlrPriceEffectiveToDate = dataLock.IlrPriceEffectiveToDate, IlrTotalCost = dataLock.IlrTotalCost, DataLockErrorCode = dataLock.ErrorCode }); }
private int?GetFundingBandCap(TrainingProgramme course, DateTime?startDate) { if (course == null) { return(null); } var cap = course.FundingCapOn(startDate.Value); if (cap > 0) { return(cap); } return(null); }
public bool IsOverFundingLimit(TrainingProgramme trainingProgramme) { if (trainingProgramme == null) { return(false); } if (!StartDate.HasValue) { return(false); } var fundingCapAtStartDate = trainingProgramme.FundingCapOn(StartDate.Value); return(Cost.HasValue && fundingCapAtStartDate > 0 && Cost > fundingCapAtStartDate); }
public ConfirmViewModelMapperFixture SetPriceBand(int fundingCap, DateTime startDate) { trainingProgramme = new TrainingProgramme() { FundingPeriods = new System.Collections.Generic.List <TrainingProgrammeFundingPeriod> { new TrainingProgrammeFundingPeriod { EffectiveFrom = startDate.AddDays(-1), EffectiveTo = startDate.AddDays(1), FundingCap = fundingCap } } }; return(this); }
public bool IsOverFundingLimit(TrainingProgramme trainingProgramme, bool isLinkedToChangeOfPartyRequest = false) { if (trainingProgramme == null) { return(false); } if (!isLinkedToChangeOfPartyRequest && !StartDate.HasValue) { return(false); } var fundingCapAtStartDate = trainingProgramme.FundingCapOn(isLinkedToChangeOfPartyRequest ? OriginalStartDate.Value : StartDate.Value); return(Cost.HasValue && fundingCapAtStartDate > 0 && Cost > fundingCapAtStartDate); }
public async Task Arrange() { var autoFixture = new Fixture(); _course = autoFixture.Create <TrainingProgramme>(); _courseStandard = autoFixture.Create <TrainingProgramme>(); _providerResponse = autoFixture.Create <GetProviderResponse>(); _accountLegalEntityResponse = autoFixture.Build <AccountLegalEntityResponse>().With(x => x.LevyStatus, ApprenticeshipEmployerType.Levy).Create(); _source = autoFixture.Create <ApprenticeRequest>(); _source.StartMonthYear = "062020"; _source.TransferSenderId = string.Empty; _source.AccountId = 12345; _commitmentsApiClient = new Mock <ICommitmentsApiClient>(); _commitmentsApiClient.Setup(x => x.GetProvider(It.IsAny <long>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_providerResponse); _commitmentsApiClient.Setup(x => x.GetAccountLegalEntity(_source.AccountLegalEntityId, It.IsAny <CancellationToken>())) .ReturnsAsync(_accountLegalEntityResponse); _standardTrainingProgrammes = new List <TrainingProgramme> { _courseStandard }; _commitmentsApiClient .Setup(x => x.GetAllTrainingProgrammeStandards(It.IsAny <CancellationToken>())) .ReturnsAsync(new GetAllTrainingProgrammeStandardsResponse { TrainingProgrammes = _standardTrainingProgrammes }); _allTrainingProgrammes = new List <TrainingProgramme> { _courseStandard, _course }; _commitmentsApiClient .Setup(x => x.GetAllTrainingProgrammes(It.IsAny <CancellationToken>())) .ReturnsAsync(new GetAllTrainingProgrammesResponse { TrainingProgrammes = _allTrainingProgrammes }); _mapper = new ApprenticeViewModelMapper( _commitmentsApiClient.Object); _result = await _mapper.Map(TestHelper.Clone(_source)); }
public void AndApprenticeshipsHaveDifferentFundingCapsThenThereIsNoCommonFundingCap() { var apprenticeships = new[] { new ApprenticeshipListItemViewModel { StartDate = new DateTime(2020, 1, 1) }, new ApprenticeshipListItemViewModel { StartDate = new DateTime(2020, 2, 1) } }; _testTrainingProgramme = new TrainingProgramme { FundingPeriods = new List <TrainingProgrammeFundingPeriod> { new TrainingProgrammeFundingPeriod { EffectiveFrom = new DateTime(2020, 1, 1), EffectiveTo = new DateTime(2020, 1, 31), FundingCap = 100 }, new TrainingProgrammeFundingPeriod { EffectiveFrom = new DateTime(2020, 2, 1), EffectiveTo = new DateTime(2020, 2, 28), FundingCap = 200 } }, CourseCode = "abc-123", EffectiveFrom = new DateTime(2020, 1, 1), EffectiveTo = new DateTime(2020, 2, 28) }; var group = new ApprenticeshipListItemGroupViewModel(apprenticeships, _testTrainingProgramme); Assert.AreEqual(null, group.CommonFundingCap); }
public void Arrange() { _standards = new List <TrainingProgramme>(); _allTrainingProgrammes = new List <TrainingProgramme>(); var standard = new TrainingProgramme { EffectiveFrom = new DateTime(2016, 01, 01), EffectiveTo = new DateTime(2016, 12, 31), Name = "Title" }; var framework = new TrainingProgramme { EffectiveFrom = new DateTime(2017, 01, 01), EffectiveTo = new DateTime(2017, 12, 31), Name = "Title" }; _standards.Add(standard); _allTrainingProgrammes = new List <TrainingProgramme> { standard, framework }; _iTrainingProgrammeApiClient = new Mock <ICommitmentsApiClient>(); _iTrainingProgrammeApiClient.Setup(x => x.GetAllTrainingProgrammeStandards(CancellationToken.None)) .ReturnsAsync(new GetAllTrainingProgrammeStandardsResponse { TrainingProgrammes = _standards }); _iTrainingProgrammeApiClient.Setup(x => x.GetAllTrainingProgrammes(CancellationToken.None)) .ReturnsAsync(new GetAllTrainingProgrammesResponse() { TrainingProgrammes = _allTrainingProgrammes }); _handler = new GetTrainingCoursesQueryHandler(_iTrainingProgrammeApiClient.Object); }