Example #1
0
        public void ErrorGettingApplicationViewModel()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel()
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.CreateApplicationViewModel(It.IsAny <Guid>(), ValidVacancyId))
            .Returns(new ApprenticeshipApplicationViewModel(MyApplicationsPageMessages.ApplicationNotFound,
                                                            ApplicationViewModelStatus.ApplicationNotFound));
            ApprenticeshipApplicationProvider.Setup(
                p =>
                p.PatchApplicationViewModel(It.IsAny <Guid>(), It.IsAny <ApprenticeshipApplicationViewModel>(),
                                            It.IsAny <ApprenticeshipApplicationViewModel>()))
            .Returns <Guid, ApprenticeshipApplicationViewModel, ApprenticeshipApplicationViewModel>(
                (cid, svm, vm) => vm);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertCode(ApprenticeshipApplicationMediatorCodes.Submit.VacancyNotFound, false);
        }
Example #2
0
        public void GetApplicationViewModelError()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var savedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel
                {
                    VacancyStatus = VacancyStatuses.Live
                }
            };
            var submittedApplicationViewModel = new ApprenticeshipApplicationViewModel
            {
                Candidate        = new ApprenticeshipCandidateViewModel(),
                VacancyDetail    = new ApprenticeshipVacancyDetailViewModel(),
                ViewModelStatus  = ApplicationViewModelStatus.Error,
                ViewModelMessage = "An error message"
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(savedViewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(submittedApplicationViewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertMessage(ApprenticeshipApplicationMediatorCodes.Submit.Error,
                                   ApplicationPageMessages.SubmitApplicationFailed, UserMessageLevel.Warning, false, true);
        }
Example #3
0
        public void AcceptSubmitValidationError()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = false
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel
                {
                    VacancyStatus = VacancyStatuses.Live
                },
                Status = ApplicationStatuses.Draft
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertValidationResult(ApprenticeshipApplicationMediatorCodes.Submit.AcceptSubmitValidationError);
        }
Example #4
0
        public void ValidationError()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate = new ApprenticeshipCandidateViewModel
                {
                    Education = new EducationViewModel
                    {
                        NameOfMostRecentSchoolCollege = "A School",
                        FromYear = "0",
                        ToYear   = "0"
                    }
                },
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel
                {
                    VacancyStatus = VacancyStatuses.Live
                },
                ViewModelStatus = ApplicationViewModelStatus.Error
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertValidationResult(ApprenticeshipApplicationMediatorCodes.Submit.ValidationError);
        }
Example #5
0
        public void Ok()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel
                {
                    VacancyStatus = VacancyStatuses.Live
                }
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.CreateApplicationViewModel(It.IsAny <Guid>(), ValidVacancyId))
            .Returns(new ApprenticeshipApplicationViewModel());
            ApprenticeshipApplicationProvider.Setup(
                p =>
                p.PatchApplicationViewModel(It.IsAny <Guid>(), It.IsAny <ApprenticeshipApplicationViewModel>(),
                                            It.IsAny <ApprenticeshipApplicationViewModel>()))
            .Returns <Guid, ApprenticeshipApplicationViewModel, ApprenticeshipApplicationViewModel>(
                (cid, svm, vm) => vm);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertCode(ApprenticeshipApplicationMediatorCodes.Submit.Ok, false, true);
        }
Example #6
0
        public void IncorrectState()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel
                {
                    VacancyStatus = VacancyStatuses.Live
                },
                ViewModelStatus = ApplicationViewModelStatus.ApplicationInIncorrectState
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertMessage(ApprenticeshipApplicationMediatorCodes.Submit.IncorrectState,
                                   MyApplicationsPageMessages.ApplicationInIncorrectState, UserMessageLevel.Info, false);
        }
Example #7
0
        public void VacancyNotFound()
        {
            var postedViewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                AcceptSubmit = true
            };

            var viewModel = new ApprenticeshipApplicationPreviewViewModel
            {
                Candidate     = new ApprenticeshipCandidateViewModel(),
                VacancyDetail = new ApprenticeshipVacancyDetailViewModel(),
                Status        = ApplicationStatuses.ExpiredOrWithdrawn
            };

            ApprenticeshipApplicationProvider.Setup(
                p => p.GetApplicationPreviewViewModel(It.IsAny <Guid>(), It.IsAny <int>())).Returns(viewModel);
            ApprenticeshipApplicationProvider.Setup(p => p.SubmitApplication(It.IsAny <Guid>(), It.IsAny <int>()))
            .Returns(viewModel);

            var response = Mediator.Submit(Guid.NewGuid(), ValidVacancyId, postedViewModel);

            response.AssertCode(ApprenticeshipApplicationMediatorCodes.Submit.VacancyNotFound, false);
        }
Example #8
0
        public async Task <ActionResult> Preview(int id, ApprenticeshipApplicationPreviewViewModel model)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var response = _apprenticeshipApplicationMediator.Submit(UserContext.CandidateId, id, model);

                switch (response.Code)
                {
                case ApprenticeshipApplicationMediatorCodes.Submit.AcceptSubmitValidationError:
                    ModelState.Clear();
                    response.ValidationResult.AddToModelState(ModelState, string.Empty);
                    return View(response.ViewModel);

                case ApprenticeshipApplicationMediatorCodes.Submit.ValidationError:
                    ModelState.Clear();
                    response.ValidationResult.AddToModelState(ModelState, string.Empty);
                    return View("Apply", response.ViewModel);

                case ApprenticeshipApplicationMediatorCodes.Submit.VacancyNotFound:
                    return new ApprenticeshipNotFoundResult();

                case ApprenticeshipApplicationMediatorCodes.Submit.IncorrectState:
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return RedirectToRoute(CandidateRouteNames.MyApplications);

                case ApprenticeshipApplicationMediatorCodes.Submit.Error:
                    ModelState.Clear();
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return RedirectToRoute(CandidateRouteNames.ApprenticeshipPreview, response.Parameters);

                case ApprenticeshipApplicationMediatorCodes.Submit.Ok:
                    return RedirectToRoute(CandidateRouteNames.ApprenticeshipWhatNext, response.Parameters);
                }

                throw new InvalidMediatorCodeException(response.Code);
            }));
        }
        public MediatorResponse <ApprenticeshipApplicationPreviewViewModel> Submit(Guid candidateId, int vacancyId, ApprenticeshipApplicationPreviewViewModel viewModel)
        {
            var savedModel = _apprenticeshipApplicationProvider.GetApplicationPreviewViewModel(candidateId, vacancyId);

            if (savedModel.HasError())
            {
                return(GetMediatorResponse <ApprenticeshipApplicationPreviewViewModel>(ApprenticeshipApplicationMediatorCodes.Submit.Error, null, ApplicationPageMessages.SubmitApplicationFailed, UserMessageLevel.Warning, new { id = vacancyId }));
            }

            if (savedModel.IsExpiredOrWithdrawn())
            {
                return(GetMediatorResponse <ApprenticeshipApplicationPreviewViewModel>(ApprenticeshipApplicationMediatorCodes.Submit.VacancyNotFound));
            }

            var saveValidationResult = _apprenticeshipApplicationViewModelSaveValidator.Validate(savedModel);

            if (!saveValidationResult.IsValid)
            {
                return(GetMediatorResponse(ApprenticeshipApplicationMediatorCodes.Submit.ValidationError, savedModel, saveValidationResult));
            }

            var previewValidationResult = _apprenticeshipApplicationPreviewViewModelValidator.Validate(viewModel);

            if (!previewValidationResult.IsValid)
            {
                return(GetMediatorResponse(ApprenticeshipApplicationMediatorCodes.Submit.AcceptSubmitValidationError, savedModel, previewValidationResult));
            }

            var model = _apprenticeshipApplicationProvider.SubmitApplication(candidateId, vacancyId);

            if (model.ViewModelStatus == ApplicationViewModelStatus.ApplicationInIncorrectState)
            {
                return(GetMediatorResponse <ApprenticeshipApplicationPreviewViewModel>(ApprenticeshipApplicationMediatorCodes.Submit.IncorrectState, null, MyApplicationsPageMessages.ApplicationInIncorrectState, UserMessageLevel.Info));
            }
            if (model.ViewModelStatus == ApplicationViewModelStatus.Error || model.HasError())
            {
                return(GetMediatorResponse <ApprenticeshipApplicationPreviewViewModel>(ApprenticeshipApplicationMediatorCodes.Submit.Error, null, ApplicationPageMessages.SubmitApplicationFailed, UserMessageLevel.Warning, new
                {
                    id = vacancyId
                }));
            }

            var parameters = new
            {
                id = vacancyId,
                vacancyReference = model.VacancyDetail.VacancyReference,
                vacancyTitle     = model.VacancyDetail.Title
            };

            return(GetMediatorResponse <ApprenticeshipApplicationPreviewViewModel>(ApprenticeshipApplicationMediatorCodes.Submit.Ok, parameters: parameters));
        }