Package org.springmodules.validation.commons

Source Code of org.springmodules.validation.commons.ConfigurablePageBeanValidatorTests

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);
    }

}
TOP

Related Classes of org.springmodules.validation.commons.ConfigurablePageBeanValidatorTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.