private static TrainingProgrammeStatus?GetStatusOn(DateTime startDate, GetTrainingProgrammeQueryResult result)
        {
            var dateOnly = startDate;

            if (result.TrainingProgramme.EffectiveFrom.HasValue && result.TrainingProgramme.EffectiveFrom.Value.FirstOfMonth() > dateOnly)
            {
                return(TrainingProgrammeStatus.Pending);
            }

            if (!result.TrainingProgramme.EffectiveTo.HasValue || result.TrainingProgramme.EffectiveTo.Value >= dateOnly)
            {
                return(TrainingProgrammeStatus.Active);
            }

            return(TrainingProgrammeStatus.Expired);
        }
        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);
        }