aboutsummaryrefslogtreecommitdiffstats
path: root/compatibility-server/src/test/java/com/vaadin/v7/tests/server/validation/BeanValidationTest.java
blob: 992fe09e92a386d852c2b3d94bdf636397e98d76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.vaadin.v7.tests.server.validation;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import com.vaadin.tests.data.bean.BeanToValidate;
import com.vaadin.v7.data.Validator.InvalidValueException;
import com.vaadin.v7.data.fieldgroup.BeanFieldGroup;
import com.vaadin.v7.data.validator.BeanValidator;
import com.vaadin.v7.ui.Field;

public class BeanValidationTest {
    @Test(expected = InvalidValueException.class)
    public void testBeanValidationNull() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "firstname");
        validator.validate(null);
    }

    @Test(expected = InvalidValueException.class)
    public void testBeanValidationStringTooShort() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "firstname");
        validator.validate("aa");
    }

    @Test
    public void testBeanValidationStringOk() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "firstname");
        validator.validate("aaa");
    }

    @Test(expected = InvalidValueException.class)
    public void testBeanValidationIntegerTooSmall() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "age");
        validator.validate(17);
    }

    @Test
    public void testBeanValidationIntegerOk() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "age");
        validator.validate(18);
    }

    @Test(expected = InvalidValueException.class)
    public void testBeanValidationTooManyDigits() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "decimals");
        validator.validate("1234.567");
    }

    @Test
    public void testBeanValidationDigitsOk() {
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "decimals");
        validator.validate("123.45");
    }

    @Test
    public void testBeanValidationException_OneValidationError() {
        InvalidValueException[] causes = null;
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "lastname");
        try {
            validator.validate(null);
        } catch (InvalidValueException e) {
            causes = e.getCauses();
        }

        assertEquals(1, causes.length);
    }

    @Test
    public void testBeanValidationsException_TwoValidationErrors() {
        InvalidValueException[] causes = null;
        BeanValidator validator = new BeanValidator(BeanToValidate.class,
                "nickname");
        try {
            validator.validate("A");
        } catch (InvalidValueException e) {
            causes = e.getCauses();
        }

        assertEquals(2, causes.length);
    }

    @Test
    public void testBeanValidationNotAddedTwice() {
        // See ticket #11045
        BeanFieldGroup<BeanToValidate> fieldGroup = new BeanFieldGroup<BeanToValidate>(
                BeanToValidate.class);

        BeanToValidate beanToValidate = new BeanToValidate();
        beanToValidate.setFirstname("a");
        fieldGroup.setItemDataSource(beanToValidate);

        Field<?> nameField = fieldGroup.buildAndBind("firstname");
        assertEquals(1, nameField.getValidators().size());

        try {
            nameField.validate();
        } catch (InvalidValueException e) {
            // The 1 cause is from BeanValidator, where it tells what failed
            // 1 validation exception never gets wrapped.
            assertEquals(1, e.getCauses().length);
        }

        // Create new, identical bean to cause duplicate validator unless #11045
        // is fixed
        beanToValidate = new BeanToValidate();
        beanToValidate.setFirstname("a");
        fieldGroup.setItemDataSource(beanToValidate);

        assertEquals(1, nameField.getValidators().size());

        try {
            nameField.validate();
        } catch (InvalidValueException e) {
            // The 1 cause is from BeanValidator, where it tells what failed
            // 1 validation exception never gets wrapped.
            assertEquals(1, e.getCauses().length);
        }

    }

}