package org.springmodules.validation.commons; import java.util.Locale; import junit.framework.TestCase; import org.apache.commons.validator.Validator; import org.apache.commons.validator.ValidatorResources; import org.easymock.MockControl; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.validation.BindException; import org.springframework.validation.FieldError; /** * @author robh * @author Uri Boness */ public class ConfigurablePageBeanValidatorTests extends TestCase { public void testSupports() { ConfigurablePageBeanValidator validator = getValidator(0); assertTrue("Should support FooBean", validator.supports(FooBean.class)); assertTrue("Should support String", validator.supports(String.class)); } public void testGetLocale() { ConfigurablePageBeanValidator validator = getValidator(0); assertEquals(validator.getLocale(), Locale.getDefault()); } public void testValidate_WithPageSetting() { ConfigurablePageBeanValidator validator = getValidator(0); FooBean bean = new FooBean(); BindException errors = new BindException(bean, "pagedFooBean"); validator.validate(bean, errors); assertTrue(errors.hasFieldErrors("name")); assertTrue(errors.hasFieldErrors("name")); assertEquals(1, errors.getErrorCount()); assertEquals("name", ((FieldError) errors.getAllErrors().iterator().next()).getField()); errors = new BindException(bean, "pagedFooBean"); bean.setName("name"); validator.validate(bean, errors); assertFalse(errors.hasFieldErrors("name")); } public void testValidate() { FooBean bean = new FooBean(); String formName = "myForm"; MockControl ctl = MockControl.createControl(ValidatorFactory.class); ValidatorFactory factory = (ValidatorFactory) ctl.getMock(); // expect call to get validator with args "fooBean", bean and null factory.getValidator(formName, bean, null); ctl.setReturnValue(getCommonsValidator()); ctl.replay(); ConfigurablePageBeanValidator validator = new ConfigurablePageBeanValidator(); validator.setValidatorFactory(factory); validator.setFormName(formName); validator.setPage(0); validator.validate(bean, null); ctl.verify(); } private ConfigurablePageBeanValidator getValidator(int page) { ConfigurablePageBeanValidator validator = new ConfigurablePageBeanValidator(); validator.setFormName("pagedFooBean"); validator.setPage(page); DefaultValidatorFactory factory = new DefaultValidatorFactory(); factory.setValidationConfigLocations(new Resource[]{ new ClassPathResource("testValidation.xml", getClass()), new ClassPathResource("validation-rules.xml", getClass()) }); validator.setValidatorFactory(factory); return validator; } private Validator getCommonsValidator() { ValidatorResources res = new ValidatorResources(); res.process(); return new Validator(res); } }