Package org.springmodules.validation.commons

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

package org.springmodules.validation.commons;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

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;

/**
* @author robh
*/
public class ConfigurableBeanValidatorTests extends TestCase {

    public void testSupports() {
        ConfigurableBeanValidator validator = getValidator("fooBean");

        assertTrue("Should support FooBean", validator.supports(FooBean.class));
        assertTrue("Should support String", validator.supports(String.class));
    }

    public void testGetLocale() {
        ConfigurableBeanValidator validator = getValidator("fooBean");
        assertEquals(validator.getLocale(), Locale.getDefault());
    }

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

        ConfigurableBeanValidator validator = new ConfigurableBeanValidator();
        validator.setValidatorFactory(factory);
        validator.setFormName(formName);
        validator.validate(bean, null);

        ctl.verify();
    }

    public void testValidate_WithMappedProperty_Failure() throws Exception {
        FooBean bean = new FooBean();
        Map attributes = new HashMap();
        bean.setAttributes(attributes);

        BindException errors = new BindException(bean, "fooBeanWithMappedProperty");

        ConfigurableBeanValidator validator = getValidator("fooBeanWithMappedProperty");
        validator.validate(bean, errors);

        assertTrue(errors.hasFieldErrors("attributes[name1]"));
    }

    public void testValidate_WithMappedProperty_Success() throws Exception {
        FooBean bean = new FooBean();
        Map attributes = new HashMap();
        attributes.put("name1", "value1");
        bean.setAttributes(attributes);

        BindException errors = new BindException(bean, "fooBeanWithMappedProperty");

        ConfigurableBeanValidator validator = getValidator("fooBeanWithMappedProperty");
        validator.validate(bean, errors);

        assertFalse(errors.hasFieldErrors("attributes[name1]"));
    }

    private ConfigurableBeanValidator getValidator(String formName) {
        ConfigurableBeanValidator validator = new ConfigurableBeanValidator();
        validator.setFormName(formName);

        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.ConfigurableBeanValidatorTests

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.