public async Task And_Single_Epao_Then_Redirect_To_CourseEpao( PostChooseCourseRequest postRequest, GetCourseEpaosResult mediatorResult, EpaoListItem foundEpao, [Frozen] Mock <IMediator> mockMediator, [Greedy] CoursesController controller) { mediatorResult.Course = new CourseListItem(mediatorResult.Course.Id, mediatorResult.Course.Title, mediatorResult.Course.Level, false); mediatorResult.Epaos = new List <EpaoListItem> { foundEpao }; mockMediator .Setup(mediator => mediator.Send( It.Is <GetCourseEpaosQuery>(query => query.CourseId == postRequest.SelectedCourseId), It.IsAny <CancellationToken>())) .ReturnsAsync(mediatorResult); var result = await controller.PostChooseCourse(postRequest) as RedirectToRouteResult; result.RouteName.Should().Be(RouteNames.CourseEpao); result.RouteValues.Should().ContainKey("id"); result.RouteValues["id"].Should().Be(postRequest.SelectedCourseId); result.RouteValues.Should().ContainKey("epaoId"); result.RouteValues["epaoId"].Should().Be(foundEpao.EpaoId); }
public async Task <IActionResult> PostChooseCourse(PostChooseCourseRequest request) { try { var query = new GetCourseEpaosQuery { CourseId = request.SelectedCourseId }; var result = await _mediator.Send(query); if (result?.Epaos?.Count == 1) { return(RedirectToRoute(RouteNames.CourseEpao, new GetCourseEpaoDetailsRequest { Id = request.SelectedCourseId, EpaoId = result.Epaos.First().EpaoId })); } return(RedirectToRoute(RouteNames.CourseEpaos, new GetCourseEpaosRequest { Id = request.SelectedCourseId })); } catch (ValidationException) { return(RedirectToRoute( RouteNames.ChooseCourse, new GetChooseCourseRequest { SelectedCourseId = "-1" })); } }
public async Task And_Model_Invalid_Redirect_To_Get_Choose_Course( PostChooseCourseRequest postRequest, ValidationException exception, [Frozen] Mock <IMediator> mockMediator, [Greedy] CoursesController controller) { mockMediator .Setup(mediator => mediator.Send( It.IsAny <GetCourseEpaosQuery>(), It.IsAny <CancellationToken>())) .ThrowsAsync(exception); var result = await controller.PostChooseCourse(postRequest) as RedirectToRouteResult; result.RouteName.Should().Be(RouteNames.ChooseCourse); result.RouteValues.Should().ContainKey(nameof(GetChooseCourseRequest.SelectedCourseId)); result.RouteValues[nameof(GetChooseCourseRequest.SelectedCourseId)] .Should().Be("-1"); }