public async Task Then_The_Cached_Item_Is_Returned_And_Service_Called_To_Create(
            CreateCourseDemandCommand command,
            [Frozen] Mock <IDemandService> service,
            CreateCourseDemandCommandHandler handler)
        {
            await handler.Handle(command, CancellationToken.None);

            service.Verify(x => x.CreateCourseDemand(command.Id), Times.Once);
        }
        public async Task Then_The_Command_Is_Handled_And_Service_Called_If_Valid(
            bool result,
            CreateCourseDemandCommand command,
            [Frozen] Mock <IValidator <CreateCourseDemandCommand> > validator,
            [Frozen] Mock <ICourseDemandService> service,
            CreateCourseDemandCommandHandler handler)
        {
            validator.Setup(x => x.ValidateAsync(command)).ReturnsAsync(new ValidationResult());
            service.Setup(x => x.CreateDemand(command.CourseDemand)).ReturnsAsync(result);

            var actual = await handler.Handle(command, CancellationToken.None);


            validator.Verify(x => x.ValidateAsync(It.IsAny <CreateCourseDemandCommand>()), Times.Once);
            actual.Id.Should().Be(command.CourseDemand.Id);
            actual.IsCreated.Should().Be(result);
        }
        public void Then_If_The_Command_Is_Not_Valid_A_ValidationException_Is_Thrown(
            string propertyName,
            CreateCourseDemandCommand command,
            [Frozen] Mock <IValidator <CreateCourseDemandCommand> > validator,
            [Frozen] Mock <ICourseDemandService> service,
            CreateCourseDemandCommandHandler handler)
        {
            //Arrange
            validator.Setup(x => x.ValidateAsync(command)).ReturnsAsync(new ValidationResult {
                ValidationDictionary = { { propertyName, "" } }
            });

            //Act
            var act = new Func <Task>(async() => await handler.Handle(command, CancellationToken.None));

            //Assert
            service.Verify(x => x.CreateDemand(It.IsAny <Domain.Models.CourseDemand>()), Times.Never);
            act.Should().Throw <ValidationException>()
            .WithMessage($"*{propertyName}*");
        }