You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BeanValidationTest.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.vaadin.v7.tests.server.validation;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. import com.vaadin.tests.data.bean.BeanToValidate;
  5. import com.vaadin.v7.data.Validator.InvalidValueException;
  6. import com.vaadin.v7.data.fieldgroup.BeanFieldGroup;
  7. import com.vaadin.v7.data.validator.BeanValidator;
  8. import com.vaadin.v7.ui.Field;
  9. public class BeanValidationTest {
  10. @Test(expected = InvalidValueException.class)
  11. public void testBeanValidationNull() {
  12. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  13. "firstname");
  14. validator.validate(null);
  15. }
  16. @Test(expected = InvalidValueException.class)
  17. public void testBeanValidationStringTooShort() {
  18. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  19. "firstname");
  20. validator.validate("aa");
  21. }
  22. @Test
  23. public void testBeanValidationStringOk() {
  24. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  25. "firstname");
  26. validator.validate("aaa");
  27. }
  28. @Test(expected = InvalidValueException.class)
  29. public void testBeanValidationIntegerTooSmall() {
  30. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  31. "age");
  32. validator.validate(17);
  33. }
  34. @Test
  35. public void testBeanValidationIntegerOk() {
  36. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  37. "age");
  38. validator.validate(18);
  39. }
  40. @Test(expected = InvalidValueException.class)
  41. public void testBeanValidationTooManyDigits() {
  42. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  43. "decimals");
  44. validator.validate("1234.567");
  45. }
  46. @Test
  47. public void testBeanValidationDigitsOk() {
  48. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  49. "decimals");
  50. validator.validate("123.45");
  51. }
  52. @Test
  53. public void testBeanValidationException_OneValidationError() {
  54. InvalidValueException[] causes = null;
  55. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  56. "lastname");
  57. try {
  58. validator.validate(null);
  59. } catch (InvalidValueException e) {
  60. causes = e.getCauses();
  61. }
  62. Assert.assertEquals(1, causes.length);
  63. }
  64. @Test
  65. public void testBeanValidationsException_TwoValidationErrors() {
  66. InvalidValueException[] causes = null;
  67. BeanValidator validator = new BeanValidator(BeanToValidate.class,
  68. "nickname");
  69. try {
  70. validator.validate("A");
  71. } catch (InvalidValueException e) {
  72. causes = e.getCauses();
  73. }
  74. Assert.assertEquals(2, causes.length);
  75. }
  76. @Test
  77. public void testBeanValidationNotAddedTwice() {
  78. // See ticket #11045
  79. BeanFieldGroup<BeanToValidate> fieldGroup = new BeanFieldGroup<BeanToValidate>(
  80. BeanToValidate.class);
  81. BeanToValidate beanToValidate = new BeanToValidate();
  82. beanToValidate.setFirstname("a");
  83. fieldGroup.setItemDataSource(beanToValidate);
  84. Field<?> nameField = fieldGroup.buildAndBind("firstname");
  85. Assert.assertEquals(1, nameField.getValidators().size());
  86. try {
  87. nameField.validate();
  88. } catch (InvalidValueException e) {
  89. // The 1 cause is from BeanValidator, where it tells what failed
  90. // 1 validation exception never gets wrapped.
  91. Assert.assertEquals(1, e.getCauses().length);
  92. }
  93. // Create new, identical bean to cause duplicate validator unless #11045
  94. // is fixed
  95. beanToValidate = new BeanToValidate();
  96. beanToValidate.setFirstname("a");
  97. fieldGroup.setItemDataSource(beanToValidate);
  98. Assert.assertEquals(1, nameField.getValidators().size());
  99. try {
  100. nameField.validate();
  101. } catch (InvalidValueException e) {
  102. // The 1 cause is from BeanValidator, where it tells what failed
  103. // 1 validation exception never gets wrapped.
  104. Assert.assertEquals(1, e.getCauses().length);
  105. }
  106. }
  107. }