public async Task SaveApprenticeshipDetails(ApprenticeshipDetailsRequest request) { var url = OuterApiRoutes.Application.SaveApprenticeshipDetails(request.AccountId, request.ApplicationId); using var response = await _client.PatchAsJsonAsync(url, request); response.EnsureSuccessStatusCode(); }
public WhenCallingApprenticeshipDetailsTestsFixture(ApprenticeshipStatus apprenticeshipStatus) : base() { _request = _autoFixture.Create <ApprenticeshipDetailsRequest>(); _viewModel = _autoFixture.Create <ApprenticeshipDetailsRequestViewModel>(); _viewModel.ApprenticeshipStatus = apprenticeshipStatus; _controller.TempData = new TempDataDictionary(new Mock <HttpContext>().Object, new Mock <ITempDataProvider>().Object); _mockMapper.Setup(m => m.Map <ApprenticeshipDetailsRequestViewModel>(_request)) .ReturnsAsync(_viewModel); }
public async Task <IActionResult> ApprenticeshipDetails(ApprenticeshipDetailsRequest request) { var viewModel = await _modelMapper.Map <ApprenticeshipDetailsRequestViewModel>(request); viewModel.IsV2Edit = _authorizationService.IsAuthorized(EmployerFeature.EditApprenticeV2); if (viewModel.ApprenticeshipStatus == ApprenticeshipStatus.Stopped) { TempData.AddFlashMessage(ApprenticeStoppedMessage, ITempDataDictionaryExtensions.FlashMessageLevel.Success); } return(View("details", viewModel)); }
public async Task Then_The_Service_Is_Called_With_The_Request_To_Confirm_Employment_Details() { var fixture = new Fixture(); var request = new ApprenticeshipDetailsRequest { AccountId = fixture.Create <long>(), ApplicationId = Guid.NewGuid(), ApprenticeshipDetails = new List <ApprenticeDetailsDto>() }; request.ApprenticeshipDetails.Add(new ApprenticeDetailsDto { ApprenticeId = fixture.Create <long>(), EmploymentStartDate = fixture.Create <DateTime>() }); request.ApprenticeshipDetails.Add(new ApprenticeDetailsDto { ApprenticeId = fixture.Create <long>(), EmploymentStartDate = fixture.Create <DateTime>() }); request.ApprenticeshipDetails.Add(new ApprenticeDetailsDto { ApprenticeId = fixture.Create <long>(), EmploymentStartDate = fixture.Create <DateTime>() }); var apprenticeIds = request.ApprenticeshipDetails.Select(x => x.ApprenticeId).ToList(); var command = new SaveApprenticeshipDetailsCommand(request); var commitmentsService = new Mock <ICommitmentsService>(); var commitmentApprenticeships = new List <ApprenticeshipResponse>(); foreach (var apprenticeId in apprenticeIds) { var commitment = new ApprenticeshipResponse { Id = apprenticeId, EmployerAccountId = request.AccountId, Uln = fixture.Create <long>() }; commitmentApprenticeships.Add(commitment); } commitmentsService.Setup(x => x.GetApprenticeshipDetails(request.AccountId, apprenticeIds)).ReturnsAsync(commitmentApprenticeships.ToArray()); var applicationService = new Mock <IApplicationService>(); var handler = new SaveApprenticeshipDetailsCommandHandler(commitmentsService.Object, applicationService.Object); await handler.Handle(command, CancellationToken.None); commitmentsService.Verify(x => x.GetApprenticeshipDetails( It.Is <long>(r => r == command.ApprenticeshipDetailsRequest.AccountId), It.IsAny <IEnumerable <long> >()), Times.Once); applicationService.Verify(x => x.Update( It.Is <UpdateIncentiveApplicationRequestData>( r => r.AccountId == command.ApprenticeshipDetailsRequest.AccountId && r.IncentiveApplicationId == command.ApprenticeshipDetailsRequest.ApplicationId)), Times.Once); }
public void SetUp() { //Arrange var autoFixture = new Fixture(); _request = autoFixture.Build <ApprenticeshipDetailsRequest>() .With(x => x.AccountHashedId, "123") .With(x => x.ApprenticeshipHashedId, "456") .Create(); _apprenticeshipResponse = autoFixture.Build <GetApprenticeshipResponse>() .With(x => x.CourseCode, "ABC") .With(x => x.DateOfBirth, autoFixture.Create <DateTime>()) .Create(); _priceEpisodesResponse = autoFixture.Build <GetPriceEpisodesResponse>() .With(x => x.PriceEpisodes, new List <PriceEpisode> { new PriceEpisode { Cost = 1000, ToDate = DateTime.Now.AddMonths(-1) } }) .Create(); _apprenticeshipUpdatesResponse = autoFixture.Build <GetApprenticeshipUpdatesResponse>() .With(x => x.ApprenticeshipUpdates, new List <ApprenticeshipUpdate> { new ApprenticeshipUpdate { OriginatingParty = Party.Employer } }) .Create(); _dataLocksResponse = autoFixture.Build <GetDataLocksResponse>().Create(); _changeOfPartyRequestsResponse = autoFixture.Build <GetChangeOfPartyRequestsResponse>().Create(); _trainingProgrammeResponse = autoFixture.Build <GetTrainingProgrammeResponse>().Create(); _mockCommitmentsApiClient = new Mock <ICommitmentsApiClient>(); _mockCommitmentsApiClient.Setup(r => r.GetApprenticeship(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_apprenticeshipResponse); _mockCommitmentsApiClient.Setup(c => c.GetPriceEpisodes(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_priceEpisodesResponse); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeshipUpdates(It.IsAny <long>(), It.IsAny <GetApprenticeshipUpdatesRequest>(), CancellationToken.None)) .ReturnsAsync(_apprenticeshipUpdatesResponse); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeshipDatalocksStatus(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_dataLocksResponse); _mockCommitmentsApiClient.Setup(c => c.GetChangeOfPartyRequests(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_changeOfPartyRequestsResponse); _mockCommitmentsApiClient.Setup(t => t.GetTrainingProgramme(_apprenticeshipResponse.CourseCode, It.IsAny <CancellationToken>())) .ReturnsAsync(_trainingProgrammeResponse); _mockEncodingService = new Mock <IEncodingService>(); _mapper = new ApprenticeshipDetailsRequestToViewModelMapper(_mockCommitmentsApiClient.Object, _mockEncodingService.Object, Mock.Of <ILogger <ApprenticeshipDetailsRequestToViewModelMapper> >()); }
public async Task WhenTheEmployerConfirmsTheEmploymentStartDatesForTheirApprentices() { _confirmEmploymentDetailsRequest = new ApprenticeshipDetailsRequest { AccountId = _accountId, ApplicationId = _applicationId, ApprenticeshipDetails = new List <ApprenticeDetailsDto>() }; foreach (var apprenticeId in _apprenticeshipIds) { _confirmEmploymentDetailsRequest.ApprenticeshipDetails.Add(new ApprenticeDetailsDto { ApprenticeId = apprenticeId, EmploymentStartDate = _fixture.Create <DateTime>() }); } var url = $"accounts/{_accountId}/applications/{_applicationId}/apprenticeships"; _response = await _context.OuterApiClient.PatchAsync(url, new StringContent(JsonSerializer.Serialize(_confirmEmploymentDetailsRequest), Encoding.UTF8, "application/json")); }
public async Task Then_ConfirmEmploymentDetailsCommand_is_handled( long accountId, Guid applicationId, ApprenticeshipDetailsRequest request, [Frozen] Mock <IMediator> mockMediator, [Greedy] ApplicationController controller) { mockMediator .Setup(mediator => mediator.Send( It.Is <SaveApprenticeshipDetailsCommand>(c => c.ApprenticeshipDetailsRequest.AccountId.Equals(request.AccountId) && c.ApprenticeshipDetailsRequest.ApplicationId.Equals(request.ApplicationId)), It.IsAny <CancellationToken>())) .ReturnsAsync(Unit.Value); var controllerResult = await controller.SaveApprenticeshipDetailsDetails(accountId, applicationId, request) as StatusCodeResult; Assert.IsNotNull(controllerResult); controllerResult.StatusCode.Should().Be((int)HttpStatusCode.OK); }
private ApprenticeshipDetailsRequest CreateEmploymentDetailsRequest(ApplicationModel application, EmploymentStartDatesRequest request) { var confirmRequest = new ApprenticeshipDetailsRequest { AccountId = _hashingService.DecodeValue(application.AccountId), ApplicationId = application.ApplicationId, ApprenticeshipDetails = new List <ApprenticeshipDetailsDto>() }; for (var index = 0; index < request.EmploymentStartDateDays.Count; index++) { var employmentStartDate = new DateTime(request.EmploymentStartDateYears[index].Value, request.EmploymentStartDateMonths[index].Value, request.EmploymentStartDateDays[index].Value); var employmentDetails = new ApprenticeshipDetailsDto { ApprenticeId = _hashingService.DecodeValue(request.ApprenticeshipIds[index]), EmploymentStartDate = employmentStartDate }; confirmRequest.ApprenticeshipDetails.Add(employmentDetails); } return(confirmRequest); }
public async Task <IActionResult> SaveApprenticeshipDetailsDetails(long accountId, Guid applicationId, [FromBody] ApprenticeshipDetailsRequest request) { await _mediator.Send(new SaveApprenticeshipDetailsCommand(request)); return(new OkResult()); }
public SaveApprenticeshipDetailsCommand(ApprenticeshipDetailsRequest request) { ApprenticeshipDetailsRequest = request; }
public void SetUp() { //Arrange _request = autoFixture.Build <ApprenticeshipDetailsRequest>() .With(x => x.AccountHashedId, $"A123") .With(x => x.ApprenticeshipHashedId, $"A{ApprenticeshipIdFirst}") .Create(); _apprenticeshipResponse = autoFixture.Build <GetApprenticeshipResponse>() .With(x => x.Id, ApprenticeshipIdFirst) .With(x => x.CourseCode, "123") .With(x => x.StandardUId, "ST0001_1.0") .With(x => x.Version, "1.0") .With(x => x.DateOfBirth, autoFixture.Create <DateTime>()) .Create(); _priceEpisodesResponse = autoFixture.Build <GetPriceEpisodesResponse>() .With(x => x.PriceEpisodes, new List <PriceEpisode> { new PriceEpisode { Cost = 1000, ToDate = DateTime.Now.AddMonths(-1) } }) .Create(); _apprenticeshipUpdatesResponse = autoFixture.Build <GetApprenticeshipUpdatesResponse>() .With(x => x.ApprenticeshipUpdates, new List <ApprenticeshipUpdate> { new ApprenticeshipUpdate { OriginatingParty = Party.Employer } }) .Create(); _dataLocksResponse = autoFixture.Build <GetDataLocksResponse>().Create(); _changeOfPartyRequestsResponse = autoFixture.Build <GetChangeOfPartyRequestsResponse>().Create(); var trainingProgrammeByStandardUId = autoFixture.Build <TrainingProgramme>() .With(x => x.CourseCode, _apprenticeshipResponse.CourseCode) .With(x => x.StandardUId, "ST0001_1.0") .With(x => x.Version, "1.0") .Create(); _getTrainingProgrammeByStandardUId = new GetTrainingProgrammeResponse { TrainingProgramme = trainingProgrammeByStandardUId }; var framework = autoFixture.Build <TrainingProgramme>() .Without(x => x.Version) .Without(x => x.StandardUId) .With(x => x.CourseCode, "1-2-3") .Create(); _getTrainingProgrammeResponse = new GetTrainingProgrammeResponse { TrainingProgramme = framework }; var trainingProgrammeVersions = autoFixture.Build <TrainingProgramme>().CreateMany(2).ToList(); trainingProgrammeVersions[0].Version = "1.1"; trainingProgrammeVersions[1].Version = "1.2"; _newerTrainingProgrammeVersionsResponse = autoFixture.Build <GetNewerTrainingProgrammeVersionsResponse>() .With(x => x.NewerVersions, trainingProgrammeVersions).Create(); _changeOfProviderChainReponse = autoFixture.Build <GetChangeOfProviderChainResponse>().Create(); _mockCommitmentsApiClient = new Mock <ICommitmentsApiClient>(); _mockCommitmentsApiClient.Setup(r => r.GetApprenticeship(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_apprenticeshipResponse); _mockCommitmentsApiClient.Setup(c => c.GetPriceEpisodes(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_priceEpisodesResponse); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeshipUpdates(It.IsAny <long>(), It.IsAny <GetApprenticeshipUpdatesRequest>(), CancellationToken.None)) .ReturnsAsync(_apprenticeshipUpdatesResponse); _mockCommitmentsApiClient.Setup(c => c.GetApprenticeshipDatalocksStatus(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_dataLocksResponse); _mockCommitmentsApiClient.Setup(c => c.GetChangeOfPartyRequests(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_changeOfPartyRequestsResponse); _mockCommitmentsApiClient.Setup(t => t.GetNewerTrainingProgrammeVersions(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_newerTrainingProgrammeVersionsResponse); _mockCommitmentsApiClient.Setup(t => t.GetChangeOfProviderChain(It.IsAny <long>(), CancellationToken.None)) .ReturnsAsync(_changeOfProviderChainReponse); _mockCommitmentsApiClient.Setup(c => c.GetTrainingProgrammeVersionByStandardUId(It.IsAny <string>(), CancellationToken.None)) .ReturnsAsync(_getTrainingProgrammeByStandardUId); _mockCommitmentsApiClient.Setup(c => c.GetTrainingProgramme(It.IsAny <string>(), CancellationToken.None)) .ReturnsAsync(_getTrainingProgrammeResponse); _mockEncodingService = new Mock <IEncodingService>(); _mockEncodingService.Setup(t => t.Encode(It.IsAny <long>(), It.IsAny <EncodingType>())) .Returns((long value, EncodingType encodingType) => $"A{value}"); _mockEncodingService.Setup(t => t.Decode(It.IsAny <string>(), It.IsAny <EncodingType>())) .Returns((string value, EncodingType encodingType) => long.Parse(Regex.Replace(value, "[A-Za-z ]", ""))); _mapper = new ApprenticeshipDetailsRequestToViewModelMapper(_mockCommitmentsApiClient.Object, _mockEncodingService.Object, Mock.Of <ILogger <ApprenticeshipDetailsRequestToViewModelMapper> >()); }
public async Task <IActionResult> ApprenticeshipDetails(ApprenticeshipDetailsRequest request) { var viewModel = await _modelMapper.Map <ApprenticeshipDetailsRequestViewModel>(request); return(View("details", viewModel)); }