public async Task Then_The_Request_Is_Passed_To_Mediator_And_Data_Returned()
        {
            _mediator.Setup(x => x.SendAsync(It.Is <GetTrainingProgrammeQuery>(c => c.Id.Equals(_trainingCode))))
            .ReturnsAsync(_queryResult);

            var actual = await _controller.GetTrainingProgramme(_trainingCode) as OkNegotiatedContentResult <GetTrainingProgrammeResponse>;;

            //actual
            Assert.IsNotNull(actual);
            actual.Content.TrainingProgramme.ShouldBeEquivalentTo(_queryResult.TrainingProgramme);
        }
        public async Task Then_If_There_Is_An_Error_A_Bad_Request_Is_Returned(
            [Frozen] Mock <IMediator> mediator,
            TrainingProgrammeController controller)
        {
            mediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetTrainingProgrammeQuery>(),
                       It.IsAny <CancellationToken>()))
            .Throws <InvalidOperationException>();

            var controllerResult = await controller.GetTrainingProgramme("1") as StatusCodeResult;

            controllerResult.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
        }
        public async Task Then_If_The_Course_Is_Not_Found_Then_A_NotFound_Result_Is_Returned(
            [Frozen] Mock <IMediator> mediator,
            TrainingProgrammeController controller)
        {
            mediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetTrainingProgrammeQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetTrainingProgrammeQueryResult
            {
                TrainingProgramme = null
            });

            var controllerResult = await controller.GetTrainingProgramme("1") as StatusCodeResult;

            controllerResult.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
        public async Task Then_The_Request_Is_Passed_To_Mediator_And_Data_Returned(
            string id,
            GetTrainingProgrammeQueryResult result,
            [Frozen] Mock <IMediator> mediator,
            TrainingProgrammeController controller)
        {
            mediator.Setup(x => x.Send(It.Is <GetTrainingProgrammeQuery>(c => c.Id.Equals(id)), CancellationToken.None)).ReturnsAsync(result);

            var actual = await controller.GetTrainingProgramme(id) as OkObjectResult;;

            //actual
            Assert.IsNotNull(actual);
            var model = actual.Value as GetTrainingProgrammeResponse;

            Assert.IsNotNull(model);
            model.TrainingProgramme.Should().BeEquivalentTo(result.TrainingProgramme);
        }