public async Task Then_If_Validation_Exception_Bad_Request_Returned(
            string errorKey,
            CourseDemandRequest request,
            [Frozen] Mock <IMediator> mediator,
            [Greedy] DemandController controller)
        {
            //Arrange
            var validationResult = new ValidationResult {
                ValidationDictionary = { { errorKey, "Some error" } }
            };

            mediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <CreateCourseDemandCommand>(),
                       It.IsAny <CancellationToken>()))
            .Throws(new ValidationException(validationResult.DataAnnotationResult, null, null));

            //Act
            var actual = await controller.CreateDemand(request) as ObjectResult;

            //Assert
            Assert.IsNotNull(actual);
            actual.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
            actual.Value.ToString().Should().Contain(errorKey);
        }
        public void Then_If_There_Are_Validation_Errors_But_Not_A_Location_Error_Then_The_Service_Is_Still_Called(
            CreateCachedCourseDemandCommand command,
            GetCreateCourseDemandResponse response,
            [Frozen] Mock <IDemandService> service,
            [Frozen] Mock <IValidator <CreateCachedCourseDemandCommand> > validator,
            CreateCachedCourseDemandCommandHandler handler)
        {
            //Arrange
            response.Location = null;
            var validationResult = new ValidationResult();

            validationResult.AddError(nameof(command.OrganisationName));
            validator.Setup(x => x.ValidateAsync(command)).ReturnsAsync(validationResult);
            service.Setup(x => x.GetCreateCourseDemand(command.TrainingCourseId, command.Location))
            .ReturnsAsync(response);

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

            //Assert
            service.Verify(x => x.CreateCacheCourseDemand(It.IsAny <CreateCachedCourseDemandCommand>()), Times.Never);
            act.Should().Throw <ValidationException>()
            .WithMessage($"*{nameof(command.Location)}|Enter a real town, city or postcode*");
        }