Package org.springmodules.validation.bean.rule

Source Code of org.springmodules.validation.bean.rule.PropertyValidatoinRuleTests$Person

/*
* Copyright 2004-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.springmodules.validation.bean.rule;

import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springmodules.validation.util.condition.Condition;

/**
* Tests for {@link org.springmodules.validation.bean.rule.PropertyValidationRule}.
*
* @author Uri Boness
*/
public class PropertyValidatoinRuleTests extends TestCase {

    private MockControl conditionControl;
    private Condition condition;
    private MockControl ruleControl;
    private ValidationRule rule;

    protected void setUp() throws Exception {

        conditionControl = MockControl.createControl(Condition.class);
        condition = (Condition)conditionControl.getMock();

        ruleControl = MockControl.createControl(ValidationRule.class);
        rule = (ValidationRule)ruleControl.getMock();
    }

    public void testIsApplicable_Success() throws Exception {

        conditionControl.expectAndReturn(condition.check("Uri"), true);
        conditionControl.replay();

        ValidationRule innerRule = new DefaultValidationRule(null, condition, "errorCode");
        PropertyValidationRule rule = new PropertyValidationRule("name", innerRule);
        assertTrue(rule.isApplicable(new Person("Uri")));

        conditionControl.verify();
    }

    public void testIsApplicable_Failure() throws Exception {

        conditionControl.expectAndReturn(condition.check("Uri"), false);
        conditionControl.replay();

        ValidationRule innerRule = new DefaultValidationRule(null, condition, "errorCode");
        PropertyValidationRule rule = new PropertyValidationRule("name", innerRule);
        assertFalse(rule.isApplicable(new Person("Uri")));

        conditionControl.verify();
    }

    public void testIsApplicable_WhenPropertyDoesNotExist() throws Exception {
        PropertyValidationRule rule = new PropertyValidationRule("name", null);
        assertFalse(rule.isApplicable(new Object()));
    }

    public void testGetCondition_Success() throws Exception {

        conditionControl.expectAndReturn(condition.check("Uri"), true);
        ruleControl.expectAndReturn(rule.getCondition(), condition);
        conditionControl.replay();
        ruleControl.replay();

        PropertyValidationRule propertyValidationRule = new PropertyValidationRule("name", rule);
        Condition propertyCondition = propertyValidationRule.getCondition();
        assertTrue(propertyCondition.check(new Person("Uri")));

        conditionControl.verify();
        ruleControl.verify();
    }

    public void testGetCondition_Failure() throws Exception {

        conditionControl.expectAndReturn(condition.check("Uri"), false);
        ruleControl.expectAndReturn(rule.getCondition(), condition);
        conditionControl.replay();
        ruleControl.replay();

        PropertyValidationRule propertyValidationRule = new PropertyValidationRule("name", rule);
        Condition propertyCondition = propertyValidationRule.getCondition();
        assertFalse(propertyCondition.check(new Person("Uri")));

        conditionControl.verify();
        ruleControl.verify();
    }

    public void testGetErrorCode() throws Exception {

        ruleControl.expectAndReturn(rule.getErrorCode(), "errorCode");
        ruleControl.replay();

        PropertyValidationRule propertyValidationRule = new PropertyValidationRule("name", rule);
        assertEquals("errorCode", propertyValidationRule.getErrorCode());

        ruleControl.verify();
    }

    public void testGetErrorArguments() throws Exception {

        Object object = new Object();

        Object[] arguments = new Object[0];
        ruleControl.expectAndReturn(rule.getErrorArguments(object), arguments);
        ruleControl.replay();

        PropertyValidationRule propertyValidationRule = new PropertyValidationRule("name", rule);
        assertSame(arguments, propertyValidationRule.getErrorArguments(object));

        ruleControl.verify();
    }

    public void testGetDefaultErrorMessage() throws Exception {

        ruleControl.expectAndReturn(rule.getDefaultErrorMessage(), "message");
        ruleControl.replay();

        PropertyValidationRule propertyValidationRule = new PropertyValidationRule("name", rule);
        assertEquals("message", propertyValidationRule.getDefaultErrorMessage());

        ruleControl.verify();
    }

    //================================================ Inner Classes ===================================================

    private static class Person {

        private String name;

        public Person(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

}
TOP

Related Classes of org.springmodules.validation.bean.rule.PropertyValidatoinRuleTests$Person

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.