public async Task Then_The_BackLink_Is_Set_To_Return_To_SelectLegalEntityView( ICollection <Course> courses, [Frozen] Mock <IMediator> mockMediator, ReservationsRouteModel routeModel, EmployerReservationsController controller, PostSelectCourseViewModel postSelectCourseViewModel) { //Arrange _cachedReservationResult.CohortRef = ""; _cachedReservationResult.EmployerHasSingleLegalEntity = false; routeModel.CohortReference = ""; routeModel.FromReview = false; _mediator.Setup(mediator => mediator.Send(It.IsAny <CacheReservationCourseCommand>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new ValidationException(new ValidationResult("Failed", new List <string> { "Course|The Course field is not valid." }), null, null)); postSelectCourseViewModel.SelectedCourseId = _course.Id; //Act var result = await _controller.PostSelectCourse(routeModel, postSelectCourseViewModel) as ViewResult; var viewModel = result?.Model as EmployerSelectCourseViewModel; Assert.IsNotNull(viewModel); Assert.AreEqual(RouteNames.EmployerSelectLegalEntity, viewModel.BackLink); Assert.AreEqual(routeModel.CohortReference, viewModel.CohortReference); }
public async Task Then_The_BackLink_Is_Set_To_Return_To_CohortDetails_From_ValidationError_If_There_Is_A_Cohort_Ref( ReservationsRouteModel routeModel, string cohortUrl, PostSelectCourseViewModel postSelectCourseViewModel ) { //Arrange _cachedReservationResult.CohortRef = "ABC123"; _cachedReservationResult.UkPrn = null; _cachedReservationResult.IsEmptyCohortFromSelect = false; _mediator.Setup(mediator => mediator.Send(It.IsAny <CacheReservationCourseCommand>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new ValidationException(new ValidationResult("Failed", new List <string> { "Course|The Course field is not valid." }), null, null)); postSelectCourseViewModel.SelectedCourseId = string.Empty; postSelectCourseViewModel.ApprenticeTrainingKnown = true; _externalUrlHelper .Setup(x => x.GenerateCohortDetailsUrl(null, routeModel.EmployerAccountId, _cachedReservationResult.CohortRef, false)) .Returns(cohortUrl); //Act var result = await _controller.PostSelectCourse(routeModel, postSelectCourseViewModel) as ViewResult; var viewModel = result?.Model as EmployerSelectCourseViewModel; Assert.IsNotNull(viewModel); Assert.AreEqual(cohortUrl, viewModel.BackLink); Assert.AreEqual(_cachedReservationResult.CohortRef, viewModel.CohortReference); }
public void GivenIHaveChosenACourse() { var controller = Services.GetService <EmployerReservationsController>(); var postSelectCourseViewModel = new PostSelectCourseViewModel { SelectedCourseId = TestData.Course.Id, ApprenticeTrainingKnown = true }; var result = controller.PostSelectCourse(TestData.ReservationRouteModel, postSelectCourseViewModel) .Result as RedirectToRouteResult; Assert.IsNotNull(result); Assert.AreEqual(RouteNames.EmployerApprenticeshipTraining, result.RouteName); }
public async Task WhenApprenticeshipTrainingNotKnown_ThenRedirectsToGuidancePage( ReservationsRouteModel routeModel, EmployerReservationsController controller, PostSelectCourseViewModel postSelectCourseViewModel) { //Arrange postSelectCourseViewModel.ApprenticeTrainingKnown = false; var expectedRouteName = RouteNames.EmployerCourseGuidance; //Act var result = await controller.PostSelectCourse(routeModel, postSelectCourseViewModel) as RedirectToRouteResult; //Assert Assert.NotNull(result); Assert.AreEqual(expectedRouteName, result.RouteName); }
public async Task Then_Adds_Guid_To_RouteModel( ReservationsRouteModel routeModel, PostSelectCourseViewModel postSelectCourseViewModel) { //Assign postSelectCourseViewModel.SelectedCourseId = _course.Id; //Act var result = await _controller.PostSelectCourse(routeModel, postSelectCourseViewModel) as RedirectToRouteResult; //Assert Assert.IsNotNull(result); result.RouteValues.Should().ContainKey("Id") .WhichValue.Should().Be(routeModel.Id); }
public async Task WhenApprenticeshipTrainingIsNull_ThenRedirectsToSelectCourse( ReservationsRouteModel routeModel, PostSelectCourseViewModel postSelectCourseViewModel, [Frozen] Mock <IMediator> mockMediator, EmployerReservationsController controller) { //Arrange postSelectCourseViewModel.ApprenticeTrainingKnown = null; var expectedViewName = "SelectCourse"; _mediator.Setup(mediator => mediator.Send(It.IsAny <CacheReservationCourseCommand>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new ValidationException(new ValidationResult("Failed", new List <string> { "Course|The Course field is not valid." }), null, null)); //Act var result = await _controller.PostSelectCourse(routeModel, postSelectCourseViewModel) as ViewResult; //Assert Assert.NotNull(result); Assert.AreEqual(expectedViewName, result.ViewName); }
[Test, AutoData]//note cannot use moqautodata to construct controller here due to modelmetadata usage. public async Task And_Validation_Error_Then_Returns_Validation_Error_Details( ReservationsRouteModel routeModel, PostSelectCourseViewModel postSelectCourseViewModel) { //Assign postSelectCourseViewModel.SelectedCourseId = _course.Id; postSelectCourseViewModel.ApprenticeTrainingKnown = true; _mediator.Setup(mediator => mediator.Send(It.IsAny <CacheReservationCourseCommand>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new ValidationException(new ValidationResult("Failed", new List <string> { "Course|The Course field is not valid." }), null, null)); //Act var result = await _controller.PostSelectCourse(routeModel, postSelectCourseViewModel); //Assert Assert.IsNotNull(result); var actualViewResult = result as ViewResult; Assert.That(actualViewResult.ViewName == "SelectCourse"); Assert.IsFalse(_controller.ModelState.IsValid); Assert.IsTrue(_controller.ModelState.ContainsKey("Course")); }
public async Task <IActionResult> PostSelectCourse(ReservationsRouteModel routeModel, PostSelectCourseViewModel postViewModel) { if (!ModelState.IsValid) { var viewModel = await BuildEmployerSelectCourseViewModel(routeModel, postViewModel.ApprenticeTrainingKnown); if (viewModel == null) { return(View("Index")); } return(View("SelectCourse", viewModel)); } if (postViewModel.ApprenticeTrainingKnown == false) { return(RedirectToRoute(RouteNames.EmployerCourseGuidance, routeModel)); } try { await _mediator.Send(new CacheReservationCourseCommand { Id = routeModel.Id.Value, SelectedCourseId = postViewModel.SelectedCourseId }); return(RedirectToRoute(RouteNames.EmployerApprenticeshipTraining, new ReservationsRouteModel { Id = routeModel.Id, EmployerAccountId = routeModel.EmployerAccountId, CohortReference = routeModel.CohortReference })); } catch (ValidationException e) { foreach (var member in e.ValidationResult.MemberNames) { ModelState.AddModelError(member.Split('|')[0], member.Split('|')[1]); } var viewModel = await BuildEmployerSelectCourseViewModel(routeModel, postViewModel.ApprenticeTrainingKnown, true); return(View("SelectCourse", viewModel)); } catch (CachedReservationNotFoundException) { throw new ArgumentException("Reservation not found", nameof(routeModel.Id)); } }