Package org.internna.iwebmvc.core.validation

Source Code of org.internna.iwebmvc.core.validation.ValidationVisitorTest

/*
* Copyright 2002-2007 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.internna.iwebmvc.core.validation;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import stubs.validation.CollectionBean;
import stubs.validation.DateBean;
import stubs.validation.InnerBean;
import stubs.validation.InnerBeanExtension;
import stubs.validation.NumberBean;
import stubs.validation.StringBean;
import static org.junit.Assert.*;

/**
*
* @author Jose Noheda
* @since 1.0
*/
public class ValidationVisitorTest {

    private ValidationVisitor validationVisitor;
    private StringBean stringBean;
    private NumberBean numberBean;
    private DateBean dateBean;
    private InnerBean innerBean;
    private CollectionBean collectionBean;

    @Before
    public void setUp() throws Exception {
        stringBean = new StringBean();
        numberBean = new NumberBean();
        numberBean.setDoubleNumber(2);
        dateBean = new DateBean();
        innerBean = new InnerBean();
        innerBean.setInnerBean(new InnerBeanExtension());
        innerBean.setStringProperty("abcd");
        validationVisitor = new ValidationVisitor();
        collectionBean = new CollectionBean();
    }

    @Test
    public void visitString() {
        Collection<ValidationError> errors = validationVisitor.visit(stringBean);
        assertTrue("Required error size", errors.size() == 1);
        assertEquals("Required error content", ValidationVisitor.errorCodes[0], errors.iterator().next().getErrorCode());
        stringBean.setOneString("no regexp");
        errors = validationVisitor.visit(stringBean);
        assertTrue("Regexp error size", errors.size() == 1);
        assertEquals("Regexp error content", ValidationVisitor.errorCodes[1], errors.iterator().next().getErrorCode());
        stringBean.setOneString("ok");
        errors = validationVisitor.visit(stringBean);
        assertTrue("MinLength error size", errors.size() == 1);
        assertEquals("MinLength error content", ValidationVisitor.errorCodes[2], errors.iterator().next().getErrorCode());
        stringBean.setOneString("okokokokokokokokok");
        errors = validationVisitor.visit(stringBean);
        assertTrue("MaxLength error size", errors.size() == 1);
        assertEquals("MaxLength error content", ValidationVisitor.errorCodes[3], errors.iterator().next().getErrorCode());
        stringBean.setOneString("no");
        errors = validationVisitor.visit(stringBean);
        assertTrue("Two errors", errors.size() == 2);
        stringBean.setOneString("ok!");
        errors = validationVisitor.visit(stringBean);
        assertTrue("No errors", errors.size() == 0);
    }

    @Test
    public void visitNumber() {
        Collection<ValidationError> errors = validationVisitor.visit(numberBean);
        assertTrue("Required error size", errors.size() == 1);
        assertEquals("Required error content", ValidationVisitor.errorCodes[0], errors.iterator().next().getErrorCode());
        numberBean.setFloatNumber(-1.0f);
        errors = validationVisitor.visit(numberBean);
        assertTrue("Required error min", errors.size() == 1);
        assertEquals("Min Value error content", ValidationVisitor.errorCodes[2], errors.iterator().next().getErrorCode());
        numberBean.setFloatNumber(2.0f);
        numberBean.setDoubleNumber(60);
        errors = validationVisitor.visit(numberBean);
        assertTrue("Max number exceeded", errors.size() == 1);
        assertEquals("Max Value error content", ValidationVisitor.errorCodes[3], errors.iterator().next().getErrorCode());
        numberBean.setDoubleNumber(40);
        numberBean.setIntegerNumber(-4);
        errors = validationVisitor.visit(numberBean);
        assertTrue("Required Integer error min", errors.size() == 1);
        assertEquals("Integer Min Value error content", ValidationVisitor.errorCodes[2], errors.iterator().next().getErrorCode());
    }

    @Test
    public void visitDate() {
        Collection<ValidationError> errors = validationVisitor.visit(dateBean);
        assertTrue("Required error size", errors.size() == 2);
        assertEquals("Required error content", ValidationVisitor.errorCodes[0], errors.iterator().next().getErrorCode());
        Calendar time = Calendar.getInstance();
        time.add(Calendar.YEAR, -1);
        dateBean.setPastDate(time.getTime());
        errors = validationVisitor.visit(dateBean);
        assertTrue("Past year recognized", errors.size() == 1);
        time.setTime(new Date());
        time.add(Calendar.DATE, -1);
        dateBean.setYesterday(time.getTime());
        errors = validationVisitor.visit(dateBean);
        assertTrue("All times ok", errors.size() == 0);
    }

    @Test
    public void visitBean() {
        innerBean.getInnerBean().setStringProperty("hi");
        Collection<ValidationError> errors = validationVisitor.visit(innerBean);
        assertTrue("Required error size", errors.size() == 1);
        ValidationError error = errors.iterator().next();
        assertEquals("Inner string error", ValidationVisitor.errorCodes[1], error.getErrorCode());
        assertEquals("Inner path established", "innerBean.stringProperty", errors.iterator().next().getPath());
        innerBean.getInnerBean().setStringProperty("abcd");
        errors = validationVisitor.visit(innerBean);
        assertTrue("No inner errors", errors.size() == 0);
    }

    @Test
    public void visitCollection() {
        Collection<ValidationError> errors = validationVisitor.visit(collectionBean);
        assertTrue("Required error size", errors.size() == 1);
        assertEquals("Required error size code 0", errors.iterator().next().getErrorCode(), ValidationVisitor.errorCodes[0]);
        collectionBean.setBeans(new ArrayList<InnerBean>());
        errors = validationVisitor.visit(collectionBean);
        assertTrue("Required a minimum size", errors.size() == 1);
        assertEquals("Required a minimum size code 2", errors.iterator().next().getErrorCode(), ValidationVisitor.errorCodes[2]);
        collectionBean.getBeans().add(innerBean);
        errors = validationVisitor.visit(collectionBean);
        assertTrue("Errors in inner bean", errors.size() == 1);
        assertEquals("Correct collection path", "beans[0].innerBean.stringProperty", errors.iterator().next().getPath());
        collectionBean.getBeans().iterator().next().getInnerBean().setStringProperty("abcd");
        errors = validationVisitor.visit(collectionBean);
        assertTrue("No errors in inner bean", errors.size() == 0);
        collectionBean.getBeans().add(innerBean);
    }

}
TOP

Related Classes of org.internna.iwebmvc.core.validation.ValidationVisitorTest

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.