public static QueryAndValidator CreateValidator(
     QueryAndValidatorType self,
     Func<Type, IValidator> createValidator)
 {
     var validator = self.ValidatorType == null
                         ? null
                         : createValidator(self.ValidatorType);
     return new QueryAndValidator(self.Query, validator);
 }
 public void TestQuery()
 {
     var query = new QueryA();
     var testValidator = new TestValidator<QueryA>();
     var self = new QueryAndValidatorType(query, typeof(TestValidator<QueryA>));
     var result = QueryValidationSteps.CreateValidator(
         self,
         t =>
         {
             t.ShouldBe(typeof(TestValidator<QueryA>));
             return testValidator;
         });
     result.Query.ShouldBe(query);
     result.Validator.ShouldBe(testValidator);
 }
 public void TestQueryNullIn()
 {
     var query = new QueryA();
     var self = new QueryAndValidatorType(query, null);
     var spy = Substitute.For<Func<Type, IValidator>>();
     var result = QueryValidationSteps.CreateValidator(self, spy);
     result.Query.ShouldBe(query);
     result.Validator.ShouldBe(null);
     spy.DidNotReceive().Invoke(Arg.Any<Type>());
 }