public async Task <IActionResult> ChooseCourse(GetChooseCourseRequest request = null)
        {
            if (!string.IsNullOrEmpty(request?.SelectedCourseId))
            {
                ModelState.AddModelError(ValidationKeys.SelectedCourseId, ValidationKeys.Messages[ValidationKeys.SelectedCourseId]);
                ModelState.AddModelError(ValidationKeys.SelectedCourseIdNoJs, ValidationKeys.Messages[ValidationKeys.SelectedCourseIdNoJs]);
            }

            var result = await _mediator.Send(new GetCoursesQuery());

            var viewModel = new ChooseCourseViewModel
            {
                Courses = result.Courses.Select(item => (CourseListItemViewModel)item)
            };

            return(View(viewModel));
        }
        public async Task And_Invalid_Then_Adds_ModelState_Error(
            GetChooseCourseRequest request,
            GetCoursesResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] CoursesController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetCoursesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            await controller.ChooseCourse(request);

            controller.ModelState.IsValid.Should().BeFalse();
            controller.ModelState.ContainsKey("SelectedCourseId").Should().BeTrue();
            controller.ModelState.ContainsKey("SelectedCourseIdNoJs").Should().BeTrue();
            controller.ModelState["SelectedCourseId"].Errors[0].ErrorMessage
            .Should().Be("Enter an apprenticeship training course");
            controller.ModelState["SelectedCourseIdNoJs"].Errors[0].ErrorMessage
            .Should().Be("Select an apprenticeship training course");
        }