public void When_interceptor_specified_Intercepts_validation() { var form = new FormCollection { { "Email", "foo" }, { "Surname", "foo" }, { "Forename", "foo" }, }; var context = new ModelBindingContext { ModelName = "test", ModelMetadata = CreateMetaData(typeof(PropertiesTestModel)), ModelState = new ModelStateDictionary(), FallbackToEmptyPrefix = true, ValueProvider = form.ToValueProvider(), }; var binder = new CustomizeValidatorAttribute { Interceptor = typeof(SimplePropertyInterceptor) }; binder.BindModel(controllerContext, context); context.ModelState.IsValidField("Forename").ShouldBeFalse(); context.ModelState.IsValidField("Surname").ShouldBeFalse(); context.ModelState.IsValidField("Email").ShouldBeTrue(); }
public void Should_only_validate_specified_ruleset() { var form = new FormCollection { { "Email", "foo" }, { "Surname", "foo" }, { "Forename", "foo" }, }; var context = new ModelBindingContext { ModelName = "test", ModelMetadata = CreateMetaData(typeof(RulesetTestModel)), ModelState = new ModelStateDictionary(), FallbackToEmptyPrefix = true, ValueProvider = form.ToValueProvider(), }; var binder = new CustomizeValidatorAttribute { RuleSet = "Names" }; binder.BindModel(controllerContext, context); context.ModelState.IsValidField("Forename").ShouldBeFalse(); context.ModelState.IsValidField("Surname").ShouldBeFalse(); context.ModelState.IsValidField("Email").ShouldBeTrue(); }
public void Validator_customizations_should_only_apply_to_single_parameter() { var form = new FormCollection { { "first.Email", "foo" }, { "first.Surname", "foo" }, { "first.Forename", "foo" }, { "second.Email", "foo" }, { "second.Surname", "foo" }, { "second.Forename", "foo" } }; var modelstate = new ModelStateDictionary(); var firstContext = new ModelBindingContext { ModelName = "first", ModelMetadata = CreateMetaData(typeof(RulesetTestModel)), ModelState = modelstate, FallbackToEmptyPrefix = true, ValueProvider = form.ToValueProvider(), }; var secondContext = new ModelBindingContext { ModelName = "second", ModelMetadata = CreateMetaData(typeof(RulesetTestModel)), ModelState = modelstate, FallbackToEmptyPrefix = true, ValueProvider = form.ToValueProvider() }; // Use the customizations for the first var binder = new CustomizeValidatorAttribute { RuleSet = "Names" }; binder.BindModel(controllerContext, firstContext); // ...but not for the second. this.binder.BindModel(controllerContext, secondContext); //customizations should only apply to the first validator modelstate.IsValidField("first.Forename").ShouldBeFalse(); modelstate.IsValidField("first.Surname").ShouldBeFalse(); modelstate.IsValidField("second.Forename").ShouldBeTrue(); modelstate.IsValidField("second.Surname").ShouldBeTrue(); }