예제 #1
0
        public async Task ThenIsContinuationIsMappedCorrectly(bool isContinuation)
        {
            _draftApprenticeshipResponse.IsContinuation = isContinuation;
            _result = await _mapper.Map(_source) as EditDraftApprenticeshipViewModel;

            Assert.AreEqual(_draftApprenticeshipResponse.IsContinuation, _result.IsContinuation);
        }
예제 #2
0
        public void Arrange()
        {
            var fixture = new Fixture();

            var birthDate = fixture.Create <DateTime?>();
            var startDate = fixture.Create <DateTime?>();
            var endDate   = fixture.Create <DateTime?>();

            _getDraftApprenticeshipResponse = fixture.Create <GetDraftApprenticeshipResponse>();

            _mockCommitmentsApiClient = new Mock <ICommitmentsApiClient>();

            _mapper = new UpdateDraftApprenticeshipRequestMapper(_mockCommitmentsApiClient.Object);

            _source = fixture.Build <EditDraftApprenticeshipViewModel>()
                      .With(x => x.CourseCode, fixture.Create <int>().ToString())
                      .With(x => x.BirthDay, birthDate?.Day)
                      .With(x => x.BirthMonth, birthDate?.Month)
                      .With(x => x.BirthYear, birthDate?.Year)
                      .With(x => x.EndMonth, endDate?.Month)
                      .With(x => x.EndYear, endDate?.Year)
                      .With(x => x.StartMonth, startDate?.Month)
                      .With(x => x.StartYear, startDate?.Year)
                      .Without(x => x.StartDate)
                      .Without(x => x.Courses)
                      .Create();

            _mockCommitmentsApiClient.Setup(x => x.GetDraftApprenticeship(_source.CohortId.Value, _source.DraftApprenticeshipId, It.IsAny <CancellationToken>()))
            .ReturnsAsync(_getDraftApprenticeshipResponse);

            _act = async() => await _mapper.Map(TestHelper.Clone(_source));
        }
        public async Task <IActionResult> EditDraftApprenticeship(EditDraftApprenticeshipViewModel model)
        {
            var updateRequest = await _modelMapper.Map <UpdateDraftApprenticeshipRequest>(model);

            await _commitmentsApiClient.UpdateDraftApprenticeship(model.CohortId.Value, model.DraftApprenticeshipId, updateRequest);

            return(RedirectToAction("Details", "Cohort", new { model.AccountHashedId, model.CohortReference }));
        }
        public void Validate_FinishDate_ShouldBeValidated(int?month, int?year, bool expectedValid)
        {
            var model = new EditDraftApprenticeshipViewModel {
                EndMonth = month, EndYear = year
            };

            AssertValidationResult(request => request.EndDate, model, expectedValid);
        }
        public void Validate_DoB_ShouldBeValidated(int?day, int?month, int?year, bool expectedValid)
        {
            var model = new EditDraftApprenticeshipViewModel {
                BirthDay = day, BirthMonth = month, BirthYear = year
            };

            AssertValidationResult(request => request.DateOfBirth, model, expectedValid);
        }
예제 #6
0
        public async Task CoursesAreMappedCorrectlyWhenCohortIsChangeOfParty()
        {
            _cohort.LevyStatus = ApprenticeshipEmployerType.NonLevy;
            _draftApprenticeshipResponse.IsContinuation = true;

            _result = await _mapper.Map(_source) as EditDraftApprenticeshipViewModel;

            Assert.AreEqual(_allTrainingProgrammes, _result.Courses);
        }
예제 #7
0
        public async Task CoursesAreMappedCorrectlyWhenAccountIsNonLevy(long?transferSenderId)
        {
            _cohort.LevyStatus       = ApprenticeshipEmployerType.NonLevy;
            _cohort.TransferSenderId = transferSenderId;

            _result = await _mapper.Map(_source) as EditDraftApprenticeshipViewModel;

            Assert.AreEqual(_standardTrainingProgrammes, _result.Courses);
        }
예제 #8
0
        public async Task <IActionResult> EditDraftApprenticeship(EditDraftApprenticeshipViewModel model)
        {
            var updateRequest = await _modelMapper.Map <UpdateDraftApprenticeshipRequest>(model);

            await _commitmentsApiClient.UpdateDraftApprenticeship(model.CohortId.Value, model.DraftApprenticeshipId.Value, updateRequest);

            var cohortDetailsUrl = $"{model.ProviderId}/apprentices/{model.CohortReference}/Details";
            var url = _urlHelper.ProviderApprenticeshipServiceLink(cohortDetailsUrl);

            return(Redirect(url));
        }
예제 #9
0
        public async Task Arrange()
        {
            var autoFixture = new Fixture();

            _allTrainingProgrammes      = autoFixture.CreateMany <TrainingProgramme>().ToList();
            _standardTrainingProgrammes = autoFixture.CreateMany <TrainingProgramme>().ToList();
            _encodedApprenticeshipId    = autoFixture.Create <string>();
            _cohortReference            = autoFixture.Create <string>();

            _encodingService = new Mock <IEncodingService>();
            _encodingService
            .Setup(x => x.Encode(It.IsAny <long>(), It.Is <EncodingType>(e => e == EncodingType.ApprenticeshipId)))
            .Returns(_encodedApprenticeshipId);
            _encodingService
            .Setup(x => x.Encode(It.IsAny <long>(), It.Is <EncodingType>(e => e == EncodingType.CohortReference)))
            .Returns(_cohortReference);

            _draftApprenticeshipResponse = autoFixture.Create <GetDraftApprenticeshipResponse>();
            _draftApprenticeshipResponse.IsContinuation = false;
            _commitmentsApiClient = new Mock <ICommitmentsApiClient>();
            _commitmentsApiClient.Setup(x =>
                                        x.GetDraftApprenticeship(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_draftApprenticeshipResponse);
            _commitmentsApiClient
            .Setup(x => x.GetAllTrainingProgrammeStandards(It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetAllTrainingProgrammeStandardsResponse
            {
                TrainingProgrammes = _standardTrainingProgrammes
            });

            _commitmentsApiClient
            .Setup(x => x.GetAllTrainingProgrammes(It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetAllTrainingProgrammesResponse
            {
                TrainingProgrammes = _allTrainingProgrammes
            });

            _cohort           = autoFixture.Create <GetCohortResponse>();
            _cohort.WithParty = Party.Employer;
            _cohort.ChangeOfPartyRequestId = null;
            _commitmentsApiClient.Setup(x => x.GetCohort(It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_cohort);

            _source        = autoFixture.Create <EditDraftApprenticeshipRequest>();
            _source.Cohort = _cohort;
            _mapper        = new EditDraftApprenticeshipViewModelMapper(_commitmentsApiClient.Object, _encodingService.Object);

            _result = await _mapper.Map(TestHelper.Clone(_source)) as EditDraftApprenticeshipViewModel;
        }
        public async Task <IActionResult> EditDraftApprenticeship(EditDraftApprenticeshipViewModel model)
        {
            var updateRequest = await _modelMapper.Map <UpdateDraftApprenticeshipRequest>(model);

            await _commitmentsApiClient.UpdateDraftApprenticeship(model.CohortId.Value, model.DraftApprenticeshipId.Value, updateRequest);

            var draftApprenticeship = await _commitmentsApiClient.GetDraftApprenticeship(model.CohortId.Value, model.DraftApprenticeshipId.Value);

            if (draftApprenticeship.HasStandardOptions)
            {
                return(RedirectToAction("SelectOptions", "DraftApprenticeship", new { model.ProviderId, model.DraftApprenticeshipHashedId, model.CohortReference }));
            }

            return(RedirectToAction("Details", "Cohort", new { model.ProviderId, model.CohortReference }));
        }
        public void Arrange()
        {
            var fixture = new Fixture();

            var birthDate = fixture.Create <DateTime?>();
            var startDate = fixture.Create <DateTime?>();
            var endDate   = fixture.Create <DateTime?>();

            _mapper = new EditDraftApprenticeshipToUpdateRequestMapper();

            _source = fixture.Build <EditDraftApprenticeshipViewModel>()
                      .With(x => x.BirthDay, birthDate?.Day)
                      .With(x => x.BirthMonth, birthDate?.Month)
                      .With(x => x.BirthYear, birthDate?.Year)
                      .With(x => x.EndMonth, endDate?.Month)
                      .With(x => x.EndYear, endDate?.Year)
                      .With(x => x.StartMonth, startDate?.Month)
                      .With(x => x.StartYear, startDate?.Year)
                      .Without(x => x.StartDate)
                      .Without(x => x.Courses)
                      .Create();

            _act = async() => await _mapper.Map(TestHelper.Clone(_source));
        }
        public DraftApprenticeshipControllerTestFixture()
        {
            var autoFixture = new Fixture();

            _cohortId = autoFixture.Create <long>();
            _draftApprenticeshipId       = autoFixture.Create <long>();
            _providerId                  = autoFixture.Create <int>();
            _cohortReference             = autoFixture.Create <string>();
            _draftApprenticeshipHashedId = autoFixture.Create <string>();

            _editDraftApprenticeshipRequest = autoFixture.Build <EditDraftApprenticeshipRequest>()
                                              .With(x => x.CohortId, _cohortId)
                                              .With(x => x.DraftApprenticeshipId, _draftApprenticeshipId)
                                              .Create();

            _editDraftApprenticeshipDetails = autoFixture.Build <GetDraftApprenticeshipResponse>()
                                              .Create();

            _createAddDraftApprenticeshipRequest = new AddDraftApprenticeshipRequest();
            _updateDraftApprenticeshipRequest    = new UpdateDraftApprenticeshipRequest();

            _reservationsAddDraftApprenticeshipRequest = autoFixture.Build <ReservationsAddDraftApprenticeshipRequest>()
                                                         .With(x => x.ProviderId, _providerId)
                                                         .With(x => x.CohortId, _cohortId)
                                                         .With(x => x.CohortReference, _cohortReference)
                                                         .With(x => x.StartMonthYear, "012019")
                                                         .Create();

            _courseResponse = new GetTrainingCoursesQueryResponse
            {
                TrainingCourses = new TrainingProgramme[0]
            };

            _addModel = new AddDraftApprenticeshipViewModel
            {
                ProviderId      = _providerId,
                CohortId        = _cohortId,
                CohortReference = _cohortReference
            };

            _editModel = new EditDraftApprenticeshipViewModel
            {
                ProviderId                  = _providerId,
                CohortId                    = _cohortId,
                CohortReference             = _cohortReference,
                DraftApprenticeshipId       = _draftApprenticeshipId,
                DraftApprenticeshipHashedId = _draftApprenticeshipHashedId
            };

            _cohortResponse = autoFixture.Build <GetCohortResponse>()
                              .With(x => x.LevyStatus, ApprenticeshipEmployerType.Levy)
                              .With(x => x.ChangeOfPartyRequestId, default(long?))
                              .Create();

            _apiModelException = new CommitmentsApiModelException(new List <ErrorDetail>()
            {
                new ErrorDetail("Name", "Cannot be more than...")
            });

            _mediator = new Mock <IMediator>();
            _mediator.Setup(x => x.Send(It.IsAny <GetTrainingCoursesQueryRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_courseResponse);

            _modelMapper = new Mock <IModelMapper>();
            _modelMapper.Setup(x => x.Map <AddDraftApprenticeshipRequest>(It.IsAny <AddDraftApprenticeshipViewModel>()))
            .ReturnsAsync(_createAddDraftApprenticeshipRequest);

            _modelMapper.Setup(x => x.Map <EditDraftApprenticeshipViewModel>(It.IsAny <EditDraftApprenticeshipRequest>()))
            .ReturnsAsync(_editModel);

            _modelMapper.Setup(x => x.Map <UpdateDraftApprenticeshipRequest>(It.IsAny <EditDraftApprenticeshipViewModel>()))
            .ReturnsAsync(_updateDraftApprenticeshipRequest);

            _linkGenerator = new Mock <ILinkGenerator>();
            _linkGenerator.Setup(x => x.ProviderApprenticeshipServiceLink(It.IsAny <string>()))
            .Returns <string>(input => input);

            _commitmentsApiClient = new Mock <ICommitmentsApiClient>();
            _commitmentsApiClient.Setup(x => x.GetCohort(It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_cohortResponse);

            _controller = new DraftApprenticeshipController(_mediator.Object,
                                                            _linkGenerator.Object, _commitmentsApiClient.Object, _modelMapper.Object);
        }
        private void AssertValidationResult <T>(Expression <Func <EditDraftApprenticeshipViewModel, T> > property, EditDraftApprenticeshipViewModel instance, bool expectedValid)
        {
            var validator = new EditDraftApprenticeshipViewModelValidator();

            if (expectedValid)
            {
                validator.ShouldNotHaveValidationErrorFor(property, instance);
            }
            else
            {
                validator.ShouldHaveValidationErrorFor(property, instance);
            }
        }