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);
        }
Ejemplo n.º 3
0
        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> >());
        }
Ejemplo n.º 6
0
        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"));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 9
0
        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;
 }
Ejemplo n.º 11
0
        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> >());
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> ApprenticeshipDetails(ApprenticeshipDetailsRequest request)
        {
            var viewModel = await _modelMapper.Map <ApprenticeshipDetailsRequestViewModel>(request);

            return(View("details", viewModel));
        }