public async Task ConfirmWithdrawApplication_When_already_withdrawn_returns_to_ViewApplication(string oversightStatus)
        {
            var applicationId = Guid.NewGuid();

            var viewModel = new RoatpWithdrawApplicationViewModel
            {
                ApplicationId            = applicationId,
                ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueNo,
                ErrorMessages            = new List <ValidationErrorDetail>()
            };

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply {
                ApplicationId = applicationId, ApplicationStatus = ApplicationStatus.Withdrawn
            });
            _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse {
                Errors = new List <ValidationErrorDetail>()
            });

            var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel);

            var viewResult = result as RedirectToActionResult;

            Assert.AreEqual(nameof(RoatpGatewayController.ViewApplication), viewResult.ActionName);
            Assert.AreEqual("RoatpGateway", viewResult.ControllerName);
        }
        public async Task ConfirmRemoveApplication_When_oversight_performed_selected_returns_to_ViewApplication()
        {
            var applicationId = Guid.NewGuid();

            var viewModel = new RoatpRemoveApplicationViewModel
            {
                ApplicationId            = applicationId,
                ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueNo
            };

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply {
                ApplicationId = applicationId
            });
            ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() =>
                                                                                         new ApplicationOversightDetails {
                OversightStatus = OversightReviewStatus.Successful
            });
            _removeApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse {
                Errors = new List <ValidationErrorDetail>()
            });

            var result = await _controller.ConfirmRemoveApplication(applicationId, viewModel);

            var viewResult = result as RedirectToActionResult;

            Assert.AreEqual(nameof(RoatpGatewayController.ViewApplication), viewResult.ActionName);
            Assert.AreEqual("RoatpGateway", viewResult.ControllerName);
        }
        public async Task ConfirmWithdrawApplication_Yes_selected_And_fails_validation_returns_back_to_View()
        {
            var applicationId = Guid.NewGuid();

            var viewModel = new RoatpWithdrawApplicationViewModel
            {
                ApplicationId            = applicationId,
                ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueYes
            };

            var validationErrors = new List <ValidationErrorDetail> {
                new ValidationErrorDetail()
            };

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply {
                ApplicationId = applicationId
            });
            ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() =>
                                                                                         new ApplicationOversightDetails {
                OversightStatus = OversightReviewStatus.None
            });
            _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse {
                Errors = validationErrors
            });

            var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel);

            var viewResult = result as ViewResult;

            Assert.IsTrue(viewResult.ViewName.EndsWith("ConfirmWithdrawApplication.cshtml"));
        }
Beispiel #4
0
        public void post_organisation_status_clarification_happy_path()
        {
            var applicationId = Guid.NewGuid();
            var pageId        = "1-30";

            var viewModel = new OrganisationStatusViewModel()
            {
                Status              = SectionReviewStatus.Pass,
                SourcesCheckedOn    = DateTime.Now,
                ErrorMessages       = new List <ValidationErrorDetail>(),
                ClarificationAnswer = ClarificationAnswer
            };

            viewModel.SourcesCheckedOn = DateTime.Now;
            var command = new SubmitGatewayPageAnswerCommand(viewModel);

            GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse {
                Errors = new List <ValidationErrorDetail>()
            });

            ApplyApiClient.Setup(x =>
                                 x.SubmitGatewayPageAnswer(applicationId, pageId, viewModel.Status, UserId, Username, It.IsAny <string>()));

            var result = _controller.ClarifyOrganisationStatus(command).Result;

            ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), ClarificationAnswer), Times.Once);
            _orchestrator.Verify(x => x.GetOrganisationStatusViewModel(It.IsAny <GetOrganisationStatusRequest>()), Times.Never());
        }
Beispiel #5
0
        public void post_legal_name_clarification_happy_path()
        {
            var applicationId = Guid.NewGuid();
            var pageId        = "1-10";

            var vm = new LegalNamePageViewModel
            {
                Status              = SectionReviewStatus.Pass,
                SourcesCheckedOn    = DateTime.Now,
                ErrorMessages       = new List <ValidationErrorDetail>(),
                ClarificationAnswer = ClarificationAnswer
            };

            vm.SourcesCheckedOn = DateTime.Now;
            var command = new SubmitGatewayPageAnswerCommand(vm);

            var pageData = JsonConvert.SerializeObject(vm);

            GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse {
                Errors = new List <ValidationErrorDetail>()
            });

            ApplyApiClient.Setup(x =>
                                 x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>()));

            var result = _controller.ClarifyIcoNumberPage(command).Result;

            ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), ClarificationAnswer), Times.Once);
            _orchestrator.Verify(x => x.GetLegalNameViewModel(It.IsAny <GetLegalNameRequest>()), Times.Never());
        }
Beispiel #6
0
        public void post_address_happy_path()
        {
            var applicationId = Guid.NewGuid();
            var pageId        = "Address";

            var vm = new AddressCheckViewModel
            {
                Status           = SectionReviewStatus.Pass,
                SourcesCheckedOn = DateTime.Now,
                ErrorMessages    = new List <ValidationErrorDetail>()
            };

            vm.SourcesCheckedOn = DateTime.Now;
            var command = new SubmitGatewayPageAnswerCommand(vm);

            var pageData = JsonConvert.SerializeObject(vm);

            ApplyApiClient.Setup(x =>
                                 x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>()));

            var result = _controller.EvaluateAddressPage(command).Result;

            ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), null), Times.Once);
            _orchestrator.Verify(x => x.GetAddressViewModel(It.IsAny <GetAddressRequest>()), Times.Never());
        }
Beispiel #7
0
        public void post_legal_name_clarification_path_with_errors()
        {
            var applicationId = Guid.NewGuid();
            var pageId        = "1-20";

            var vm = new LegalNamePageViewModel
            {
                Status              = SectionReviewStatus.Fail,
                SourcesCheckedOn    = DateTime.Now,
                ErrorMessages       = new List <ValidationErrorDetail>(),
                ClarificationAnswer = ClarificationAnswer
            };

            vm.ApplicationId    = applicationId;
            vm.PageId           = vm.PageId;
            vm.SourcesCheckedOn = DateTime.Now;
            var command = new SubmitGatewayPageAnswerCommand(vm);

            GatewayValidator.Setup(v => v.ValidateClarification(command))
            .ReturnsAsync(new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "OptionFail", ErrorMessage = "needs text"
                    }
                }
            }
                          );

            _orchestrator.Setup(x => x.GetLegalNameViewModel(It.Is <GetLegalNameRequest>(y => y.ApplicationId == vm.ApplicationId &&
                                                                                         y.UserName == Username))).ReturnsAsync(vm);

            var pageData = JsonConvert.SerializeObject(vm);

            GatewayValidator.Setup(v => v.ValidateClarification(command))
            .ReturnsAsync(new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "OptionFail", ErrorMessage = "needs text"
                    }
                }
            }
                          );
            ApplyApiClient.Setup(x =>
                                 x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>()));

            var result = _controller.ClarifyLegalNamePage(command).Result;

            ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never);
        }
        public async Task ConfirmOutcome_evaluation_result_is_on_error()
        {
            var applicationId = Guid.NewGuid();

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply {
                ApplicationId = applicationId, ApplyData = new ApplyData {
                    ApplyDetails = new ApplyDetails {
                    }
                }
            });

            var viewModel = new RoatpGatewayApplicationViewModel
            {
                ApplicationId       = applicationId,
                GatewayReviewStatus = GatewayReviewStatus.InProgress,
                ErrorMessages       = new List <ValidationErrorDetail>()
            };

            _validator.Setup(v => v.Validate(viewModel))
            .ReturnsAsync(new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "GatewayReviewStatus", ErrorMessage = "Select what you want to do"
                    }
                }
            });

            var expectedViewModelWithErrors = new RoatpGatewayApplicationViewModel
            {
                ApplicationId       = applicationId,
                GatewayReviewStatus = GatewayReviewStatus.New,
                ErrorMessages       = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "GatewayReviewStatus", ErrorMessage = "Select what you want to do"
                    }
                }
            };

            _orchestrator.Setup(x => x.GetConfirmOverviewViewModel(It.Is <GetApplicationOverviewRequest>(y => y.ApplicationId == applicationId && y.UserName == Username))).ReturnsAsync(expectedViewModelWithErrors);

            var result = await _controller.EvaluateConfirmOutcome(viewModel);

            var viewResult = result as ViewResult;

            Assert.AreSame(expectedViewModelWithErrors, viewResult.Model);
        }
        public async Task AboutToAskForClarification_with_yes_then_redirected_to_successful_page()
        {
            var applicationId = Guid.NewGuid();

            _orchestrator.Setup(x => x.GetClarificationViewModel(It.IsAny <GetApplicationClarificationsRequest>()))
            .ReturnsAsync(new RoatpGatewayClarificationsViewModel());

            ApplyApiClient.Setup(x => x.UpdateGatewayReviewStatusAsClarification(applicationId, It.IsAny <string>(), It.IsAny <string>()));

            var confirmAskForClarification = "Yes";
            var result = await _controller.AboutToAskForClarification(applicationId, confirmAskForClarification);

            var viewResult = result as ViewResult;

            Assert.IsTrue(viewResult.ViewName.Contains("ConfirmApplicationClarification.cshtml"));
            ApplyApiClient.Verify(x => x.UpdateGatewayReviewStatusAsClarification(applicationId, It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
        public async Task ConfirmOutcome_model_is_returned()
        {
            var applicationId     = Guid.NewGuid();
            var expectedViewModel = new RoatpGatewayApplicationViewModel {
                ReadyToConfirm = true
            };

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply {
                ApplicationId = applicationId
            });
            _orchestrator.Setup(x => x.GetConfirmOverviewViewModel(It.Is <GetApplicationOverviewRequest>(y => y.ApplicationId == applicationId && y.UserName == Username))).ReturnsAsync(expectedViewModel);

            var result = await _controller.ConfirmOutcome(applicationId, GatewayReviewStatus.Pass, null, null, 0);

            var viewResult = result as ViewResult;

            Assert.AreSame(expectedViewModel, viewResult.Model);
        }
Beispiel #11
0
        public void post_organisation_status_clarification_path_with_errors()
        {
            var applicationId = Guid.NewGuid();
            var pageId        = "1-20";

            var viewModel = new OrganisationStatusViewModel()
            {
                Status              = SectionReviewStatus.Fail,
                SourcesCheckedOn    = DateTime.Now,
                ErrorMessages       = new List <ValidationErrorDetail>(),
                ClarificationAnswer = ClarificationAnswer
            };

            viewModel.ApplicationId    = applicationId;
            viewModel.PageId           = viewModel.PageId;
            viewModel.SourcesCheckedOn = DateTime.Now;
            var command = new SubmitGatewayPageAnswerCommand(viewModel);

            GatewayValidator.Setup(v => v.ValidateClarification(command))
            .ReturnsAsync(new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "OptionFail", ErrorMessage = "needs text"
                    }
                }
            }
                          );

            _orchestrator.Setup(x => x.GetOrganisationStatusViewModel(It.IsAny <GetOrganisationStatusRequest>()))
            .ReturnsAsync(viewModel)
            .Verifiable("view model not returned");

            ApplyApiClient.Setup(x =>
                                 x.SubmitGatewayPageAnswer(applicationId, pageId, viewModel.Status, UserId, Username, It.IsAny <string>()));

            var result = _controller.ClarifyOrganisationStatus(command).Result;

            ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never);
            _orchestrator.Verify(x => x.GetTradingNameViewModel(It.IsAny <GetTradingNameRequest>()), Times.Never());
        }
        public async Task ClosedApplications_ViewModel_Has_Correct_Application_Counts()
        {
            ApplyApiClient.Setup(x => x.GetClosedGatewayApplications(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(new List <RoatpApplicationSummaryItem>());

            ApplyApiClient.Setup(x => x.GetApplicationCounts(It.IsAny <string>())).ReturnsAsync(new GetGatewayApplicationCountsResponse
            {
                NewApplicationsCount        = 1,
                InProgressApplicationsCount = 2,
                ClosedApplicationsCount     = 3
            });

            var result = await _controller.ClosedApplications(null, "", "", 1);

            var viewResult      = result as ViewResult;
            var resultViewModel = viewResult.Model as RoatpGatewayDashboardViewModel;

            Assert.AreEqual(1, resultViewModel.ApplicationCounts.NewApplicationsCount);
            Assert.AreEqual(2, resultViewModel.ApplicationCounts.InProgressApplicationsCount);
            Assert.AreEqual(3, resultViewModel.ApplicationCounts.ClosedApplicationsCount);
        }
        public async Task ConfirmWithdrawApplication_Yes_selected_And_passed_validation_performs_Application_Withdrawal()
        {
            var applicationId = Guid.NewGuid();

            var application = new Apply
            {
                ApplicationId = applicationId,
                ApplyData     = new ApplyData {
                    ApplyDetails = new ApplyDetails()
                }
            };

            var viewModel = new RoatpWithdrawApplicationViewModel
            {
                ApplicationId            = applicationId,
                ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueYes,
                OptionYesText            = "Comments"
            };

            var validationErrors = new List <ValidationErrorDetail>();

            ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(application);
            ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() =>
                                                                                         new ApplicationOversightDetails {
                OversightStatus = OversightReviewStatus.None
            });
            _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse {
                Errors = validationErrors
            });

            var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel);

            var viewResult = result as ViewResult;

            Assert.IsTrue(viewResult.ViewName.EndsWith("ApplicationWithdrawn.cshtml"));
            ApplyApiClient.Verify(x => x.WithdrawApplication(viewModel.ApplicationId, viewModel.OptionYesText, It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }