public async Task Then_Gets_Course_Epao_From_Mediator(
            int courseId,
            string epaoId,
            GetCourseEpaoResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] CoursesController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetCourseEpaoQuery>(query => query.CourseId == courseId && query.EpaoId == epaoId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var controllerResult = await controller.CourseEpao(courseId, epaoId) as ObjectResult;


            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var model = controllerResult.Value as GetCourseEpaoResponse;

            model !.Course.Should().BeEquivalentTo((GetCourseListItem)mediatorResult.Course);
            model !.Epao.Should().BeEquivalentTo((EpaoDetails)mediatorResult.Epao);
            model !.CourseEpaosCount.Should().Be(mediatorResult.CourseEpaosCount);
            model !.EpaoDeliveryAreas.Should().BeEquivalentTo(
                mediatorResult.EpaoDeliveryAreas.Select(area => (EpaoDeliveryArea)area));
            model !.DeliveryAreas.Should().BeEquivalentTo(
                mediatorResult.DeliveryAreas.Select(item => (GetDeliveryAreaListItem)item));
            model !.EffectiveFrom.Should().Be(mediatorResult.EffectiveFrom);
            model !.AllCourses.Should().BeEquivalentTo(
                mediatorResult.AllCourses.Select(item => (GetCourseListItem)item));
        }