Search in sources :

Example 1 with Errors

use of cn.taketoday.validation.Errors in project today-infrastructure by TAKETODAY.

the class ValidatorFactoryTests method testValidationWithOptionalField.

@Test
public void testValidationWithOptionalField() {
    LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
    validator.afterPropertiesSet();
    MainBeanWithOptional mainBean = new MainBeanWithOptional();
    Errors errors = new BeanPropertyBindingResult(mainBean, "mainBean");
    validator.validate(mainBean, errors);
    Object rejected = errors.getFieldValue("inner.value");
    assertThat(rejected).isNull();
}
Also used : Errors(cn.taketoday.validation.Errors) BeanPropertyBindingResult(cn.taketoday.validation.BeanPropertyBindingResult) Test(org.junit.jupiter.api.Test)

Example 2 with Errors

use of cn.taketoday.validation.Errors in project today-infrastructure by TAKETODAY.

the class ValidatorFactoryTests method testInnerBeanValidation.

@Test
public void testInnerBeanValidation() {
    LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
    validator.afterPropertiesSet();
    MainBean mainBean = new MainBean();
    Errors errors = new BeanPropertyBindingResult(mainBean, "mainBean");
    validator.validate(mainBean, errors);
    Object rejected = errors.getFieldValue("inner.value");
    assertThat(rejected).isNull();
}
Also used : Errors(cn.taketoday.validation.Errors) BeanPropertyBindingResult(cn.taketoday.validation.BeanPropertyBindingResult) Test(org.junit.jupiter.api.Test)

Example 3 with Errors

use of cn.taketoday.validation.Errors in project today-framework by TAKETODAY.

the class DataBinderTests method testDirectBindingToEmptyIndexedFieldWithRegisteredSpecificEditor.

@Test
void testDirectBindingToEmptyIndexedFieldWithRegisteredSpecificEditor() {
    IndexedTestBean tb = new IndexedTestBean();
    DataBinder binder = new DataBinder(tb, "tb");
    binder.registerCustomEditor(TestBean.class, "map[key0]", new PropertyEditorSupport() {

        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            DerivedTestBean tb = new DerivedTestBean();
            tb.setName("array" + text);
            setValue(tb);
        }

        @Override
        public String getAsText() {
            return ((TestBean) getValue()).getName();
        }
    });
    Errors errors = binder.getBindingResult();
    errors.rejectValue("map[key0]", "NOT_NULL", "should not be null");
    assertThat(errors.getFieldErrorCount("map[key0]")).isEqualTo(1);
    assertThat(errors.getFieldError("map[key0]").getCode()).isEqualTo("NOT_NULL");
    assertThat(errors.getFieldError("map[key0]").getCodes()[0]).isEqualTo("NOT_NULL.tb.map[key0]");
    assertThat(errors.getFieldError("map[key0]").getCodes()[1]).isEqualTo("NOT_NULL.tb.map");
    assertThat(errors.getFieldError("map[key0]").getCodes()[2]).isEqualTo("NOT_NULL.map[key0]");
    assertThat(errors.getFieldError("map[key0]").getCodes()[3]).isEqualTo("NOT_NULL.map");
    // This next code is only generated because of the registered editor, using the
    // registered type of the editor as guess for the content type of the collection.
    assertThat(errors.getFieldError("map[key0]").getCodes()[4]).isEqualTo("NOT_NULL.cn.taketoday.beans.testfixture.beans.TestBean");
    assertThat(errors.getFieldError("map[key0]").getCodes()[5]).isEqualTo("NOT_NULL");
}
Also used : IndexedTestBean(cn.taketoday.beans.testfixture.beans.IndexedTestBean) Errors(cn.taketoday.validation.Errors) DerivedTestBean(cn.taketoday.beans.testfixture.beans.DerivedTestBean) DataBinder(cn.taketoday.validation.DataBinder) PropertyEditorSupport(java.beans.PropertyEditorSupport) Test(org.junit.jupiter.api.Test)

Example 4 with Errors

use of cn.taketoday.validation.Errors in project today-framework by TAKETODAY.

the class DataBinderTests method testCustomEditorWithSubclass.

@Test
void testCustomEditorWithSubclass() {
    IndexedTestBean tb = new IndexedTestBean();
    DataBinder binder = new DataBinder(tb, "tb");
    binder.registerCustomEditor(TestBean.class, new PropertyEditorSupport() {

        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            DerivedTestBean tb = new DerivedTestBean();
            tb.setName("array" + text);
            setValue(tb);
        }

        @Override
        public String getAsText() {
            return ((TestBean) getValue()).getName();
        }
    });
    PropertyValues pvs = new PropertyValues();
    pvs.add("array[0]", "a");
    binder.bind(pvs);
    Errors errors = binder.getBindingResult();
    errors.rejectValue("array[0]", "NOT_ROD", "are you sure you're not Rod?");
    assertThat(errors.getFieldValue("array[0]")).isEqualTo("arraya");
    assertThat(errors.getFieldErrorCount("array[0]")).isEqualTo(1);
    assertThat(errors.getFieldError("array[0]").getCode()).isEqualTo("NOT_ROD");
    assertThat(errors.getFieldError("array[0]").getCodes()[0]).isEqualTo("NOT_ROD.tb.array[0]");
    assertThat(errors.getFieldError("array[0]").getCodes()[1]).isEqualTo("NOT_ROD.tb.array");
    assertThat(errors.getFieldError("array[0]").getCodes()[2]).isEqualTo("NOT_ROD.array[0]");
    assertThat(errors.getFieldError("array[0]").getCodes()[3]).isEqualTo("NOT_ROD.array");
    assertThat(errors.getFieldError("array[0]").getCodes()[4]).isEqualTo("NOT_ROD.cn.taketoday.beans.testfixture.beans.DerivedTestBean");
    assertThat(errors.getFieldError("array[0]").getCodes()[5]).isEqualTo("NOT_ROD");
    assertThat(errors.getFieldValue("array[0]")).isEqualTo("arraya");
}
Also used : IndexedTestBean(cn.taketoday.beans.testfixture.beans.IndexedTestBean) Errors(cn.taketoday.validation.Errors) PropertyValues(cn.taketoday.beans.PropertyValues) DerivedTestBean(cn.taketoday.beans.testfixture.beans.DerivedTestBean) DataBinder(cn.taketoday.validation.DataBinder) PropertyEditorSupport(java.beans.PropertyEditorSupport) Test(org.junit.jupiter.api.Test)

Example 5 with Errors

use of cn.taketoday.validation.Errors in project today-framework by TAKETODAY.

the class DataBinderTests method testValidatorWithNestedObjectNull.

@Test
void testValidatorWithNestedObjectNull() {
    TestBean tb = new TestBean();
    Errors errors = new BeanPropertyBindingResult(tb, "tb");
    Validator testValidator = new TestBeanValidator();
    testValidator.validate(tb, errors);
    errors.setNestedPath("spouse.");
    assertThat(errors.getNestedPath()).isEqualTo("spouse.");
    Validator spouseValidator = new SpouseValidator();
    spouseValidator.validate(tb.getSpouse(), errors);
    errors.setNestedPath("");
    assertThat(errors.hasFieldErrors("spouse")).isTrue();
    assertThat(errors.getFieldErrorCount("spouse")).isEqualTo(1);
    assertThat(errors.getFieldError("spouse").getCode()).isEqualTo("SPOUSE_NOT_AVAILABLE");
    assertThat((errors.getFieldErrors("spouse").get(0)).getObjectName()).isEqualTo("tb");
    assertThat((errors.getFieldErrors("spouse").get(0)).getRejectedValue()).isNull();
}
Also used : Errors(cn.taketoday.validation.Errors) BeanPropertyBindingResult(cn.taketoday.validation.BeanPropertyBindingResult) IndexedTestBean(cn.taketoday.beans.testfixture.beans.IndexedTestBean) DerivedTestBean(cn.taketoday.beans.testfixture.beans.DerivedTestBean) ITestBean(cn.taketoday.beans.testfixture.beans.ITestBean) TestBean(cn.taketoday.beans.testfixture.beans.TestBean) Validator(cn.taketoday.validation.Validator) Test(org.junit.jupiter.api.Test)

Aggregations

Errors (cn.taketoday.validation.Errors)16 Test (org.junit.jupiter.api.Test)16 IndexedTestBean (cn.taketoday.beans.testfixture.beans.IndexedTestBean)12 DerivedTestBean (cn.taketoday.beans.testfixture.beans.DerivedTestBean)10 DataBinder (cn.taketoday.validation.DataBinder)9 BeanPropertyBindingResult (cn.taketoday.validation.BeanPropertyBindingResult)8 PropertyValues (cn.taketoday.beans.PropertyValues)7 ITestBean (cn.taketoday.beans.testfixture.beans.ITestBean)6 TestBean (cn.taketoday.beans.testfixture.beans.TestBean)6 PropertyEditorSupport (java.beans.PropertyEditorSupport)6 Validator (cn.taketoday.validation.Validator)4 FieldError (cn.taketoday.validation.FieldError)2 ResourceBundleMessageSource (cn.taketoday.context.support.ResourceBundleMessageSource)1 Assertions.assertThatIllegalStateException (org.assertj.core.api.Assertions.assertThatIllegalStateException)1