internal void VerifyRedirectToDetails(ConfirmEditApprenticeshipViewModel viewModel, IActionResult result)
        {
            var redirect = result.VerifyReturnsRedirectToActionResult();

            Assert.AreEqual(redirect.ActionName, "Details");
            Assert.AreEqual(redirect.RouteValues["ProviderId"], viewModel.ProviderId);
            Assert.AreEqual(redirect.RouteValues["ApprenticeshipHashedId"], viewModel.ApprenticeshipHashedId);
        }
        public void Validate_ConfirmDeletion_ShouldBeValidated(bool?confirmDeletion, bool expectedValid)
        {
            var model = new ConfirmEditApprenticeshipViewModel()
            {
                ConfirmChanges = confirmDeletion
            };

            AssertValidationResult(request => request.ConfirmChanges, model, expectedValid);
        }
        public async Task AndTheEditApprenticeship_IsConfirmed_and_Mapper_IsCalled(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = true;

            //Act
            var result = await _controller.ConfirmEditApprenticeship(viewModel) as RedirectToActionResult;

            //Assert
            _mockModelMapper.Verify(x => x.Map <EditApprenticeshipApiRequest>(viewModel), Times.Once);
        }
        public async Task AndTheEditApprenticeship_IsConfirmed_and_Mapper_IsCalled(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = true;

            //Act
            await fixture.ConfirmEditApprenticeship(viewModel);

            //Assert
            fixture.EditApprenticeshipApiRequestMapperIsCalled(viewModel);
        }
예제 #5
0
        public void SetUp()
        {
            var fixture = new Fixture();

            viewModel = fixture.Build <ConfirmEditApprenticeshipViewModel>()
                        .With(x => x.StartMonth, DateTime.Now.Month)
                        .With(x => x.StartYear, DateTime.Now.Year)
                        .With(x => x.EndMonth, DateTime.Now.Month)
                        .With(x => x.EndYear, DateTime.Now.Year)
                        .With(x => x.BirthMonth, DateTime.Now.Month)
                        .With(x => x.BirthYear, DateTime.Now.Year)
                        .With(x => x.BirthDay, DateTime.Now.Day)
                        .Create();

            mapper = new ConfirmEditApprenticeshipViewModelToEditApiRequestMapper();
        }
        public async Task <IActionResult> ConfirmEditApprenticeship(ConfirmEditApprenticeshipViewModel viewModel)
        {
            if (viewModel.ConfirmChanges.Value)
            {
                var request = await _modelMapper.Map <EditApprenticeshipApiRequest>(viewModel);

                var result = await _commitmentsApiClient.EditApprenticeship(request);

                if (result.NeedReapproval)
                {
                    TempData.AddFlashMessage(ApprenticeChangesSentToEmployer, ITempDataDictionaryExtensions.FlashMessageLevel.Info);
                }
                else
                {
                    TempData.AddFlashMessage(ApprenticeUpdated, ITempDataDictionaryExtensions.FlashMessageLevel.Info);
                }
            }

            TempData.Remove("EditApprenticeshipRequestViewModel");

            return(RedirectToAction(nameof(Details), new { apprenticeshipHashedId = viewModel.ApprenticeshipHashedId, providerId = viewModel.ProviderId }));
        }
예제 #7
0
        public async Task <IActionResult> ConfirmEditApprenticeship(ConfirmEditApprenticeshipViewModel viewModel)
        {
            if (viewModel.ConfirmChanges.Value)
            {
                var request = await _modelMapper.Map <EditApprenticeshipApiRequest>(viewModel);

                var result = await _commitmentsApiClient.EditApprenticeship(request);

                if (result.NeedReapproval)
                {
                    TempData.AddFlashMessage(ApprenticeUpdated, $"Your suggested changes have been sent to {viewModel.ProviderName} for approval.", ITempDataDictionaryExtensions.FlashMessageLevel.Success);
                }
                else
                {
                    TempData.AddFlashMessage(ApprenticeUpdated, ITempDataDictionaryExtensions.FlashMessageLevel.Success);
                }
            }

            TempData.Remove("EditApprenticeshipRequestViewModel");

            return(RedirectToAction(nameof(ApprenticeshipDetails), new { viewModel.AccountHashedId, viewModel.ApprenticeshipHashedId }));
        }
        public async Task AndTheEditApprenticeship_IsConfirmed_WithIntermediateUpdate_ThenRedirectToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            viewModel.ConfirmChanges = true;
            var result = await fixture.ConfirmEditApprenticeship(viewModel);

            fixture.VerifyRedirectToDetails(viewModel, result);
        }
        public async Task AndTheApprenticeship_IsEdit_WithImmediateUpdate_WithCorrectFlashMessage(ConfirmEditApprenticeshipViewModel viewModel)
        {
            fixture.SetNeedReapproval(false);

            await fixture.ConfirmEditApprenticeship(viewModel);

            fixture.ConfirmFlashMessageLevel();
            fixture.ConfirmFlashMessageValue(EditApprenticeshipUpdated);
        }
        public async Task AndTheEditApprenticeship_IsNotConfirmed_CommitmentApi_IsNotCalled(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = false;

            //Act
            await fixture.ConfirmEditApprenticeship(viewModel);

            //Assert
            fixture.VerifyEditApprenticeshipApiNeverCalled();
        }
        public async Task AndTheEditApprenticeship_IsNotConfirmed_ThenRedirectsToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = false;

            //Act
            var result = await _controller.ConfirmEditApprenticeship(viewModel) as RedirectToActionResult;

            //Assert
            Assert.AreEqual("ApprenticeshipDetails", result.ActionName);
        }
        public async Task AndTheApprenticeship_IsEdit_WithImmediateUpdate_ThenRedirectToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            fixture.SetNeedReapproval(false);

            var result = await fixture.ConfirmEditApprenticeship(viewModel);

            fixture.VerifyRedirectToDetails(viewModel, result);
        }
 internal void EditApprenticeshipApiRequestMapperIsNeverCalled(ConfirmEditApprenticeshipViewModel viewModel)
 {
     _mockMapper.Verify(x => x.Map <EditApprenticeshipApiRequest>(viewModel), Times.Never);
 }
        private void AssertValidationResult <T>(Expression <Func <ConfirmEditApprenticeshipViewModel, T> > property, ConfirmEditApprenticeshipViewModel instance, bool expectedValid)
        {
            var validator = new ConfirmEditApprenticeshipViewModelValidator();

            if (expectedValid)
            {
                validator.ShouldNotHaveValidationErrorFor(property, instance);
            }
            else
            {
                validator.ShouldHaveValidationErrorFor(property, instance);
            }
        }
        public async Task AndTheEditApprenticeship_IsConfirmed_WithIntermediateUpdate_ThenRedirectToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            viewModel.ConfirmChanges = true;
            var result = await _controller.ConfirmEditApprenticeship(viewModel);

            var redirect = result.VerifyReturnsRedirectToActionResult();

            Assert.AreEqual(redirect.ActionName, "ApprenticeshipDetails");
            Assert.AreEqual(redirect.RouteValues["AccountHashedId"], viewModel.AccountHashedId);
            Assert.AreEqual(redirect.RouteValues["ApprenticeshipHashedId"], viewModel.ApprenticeshipHashedId);

            Assert.IsTrue(_controller.TempData.Values.Contains($"Your suggested changes have been sent to {viewModel.ProviderName} for approval."));
            Assert.IsTrue(_controller.TempData.ContainsKey(FlashMessageBody));
            Assert.IsTrue(_controller.TempData.ContainsKey(FlashMessageLevel));
        }
 public Task <IActionResult> ConfirmEditApprenticeship(ConfirmEditApprenticeshipViewModel viewModel)
 {
     return(_controller.ConfirmEditApprenticeship(viewModel));
 }
        public async Task AndTheEditApprenticeship_IsNotConfirmed_ThenRedirectsToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = false;

            //Act
            var result = await fixture.ConfirmEditApprenticeship(viewModel);

            //Assert
            fixture.VerifyRedirectToDetails(viewModel, result);
        }
        public async Task AndTheEditApprenticeship_IsNotConfirmed_CommitmentApi_IsNotCalled(ConfirmEditApprenticeshipViewModel viewModel)
        {
            //Arrange
            viewModel.ConfirmChanges = false;

            //Act
            var result = await _controller.ConfirmEditApprenticeship(viewModel) as RedirectToActionResult;


            //Assert
            _mockCommitmentsApiClient.Verify(x => x.EditApprenticeship(It.IsAny <EditApprenticeshipApiRequest>(), CancellationToken.None), Times.Never);
        }
        public async Task AndTheApprenticeship_IsEdit_WithImmediateUpdate_ThenRedirectToApprenticeshipDetails(ConfirmEditApprenticeshipViewModel viewModel)
        {
            response.NeedReapproval = false;
            var result = await _controller.ConfirmEditApprenticeship(viewModel);

            var redirect = result.VerifyReturnsRedirectToActionResult();

            Assert.AreEqual(redirect.ActionName, "ApprenticeshipDetails");
            Assert.AreEqual(redirect.RouteValues["AccountHashedId"], viewModel.AccountHashedId);
            Assert.AreEqual(redirect.RouteValues["ApprenticeshipHashedId"], viewModel.ApprenticeshipHashedId);

            Assert.IsTrue(_controller.TempData.Values.Contains(EditApprenticeUpdated));
            Assert.IsTrue(_controller.TempData.ContainsKey(FlashMessageBody));
            Assert.IsTrue(_controller.TempData.ContainsKey(FlashMessageLevel));
        }
        public async Task <ConfirmEditApprenticeshipViewModel> Map()
        {
            resultViewModl = await _mapper.Map(source);

            return(resultViewModl);
        }
        public async Task AndTheEditApprenticeship_IsConfirmed_WithIntermediateUpdate_WithCorrectFlashMessage(ConfirmEditApprenticeshipViewModel viewModel)
        {
            viewModel.ConfirmChanges = true;
            await fixture.ConfirmEditApprenticeship(viewModel);

            fixture.ConfirmFlashMessageLevel();
            fixture.ConfirmFlashMessageValue(EditApprenticeNeedReapproval);
        }