|
5 | 5 | import io.frictionlessdata.tableschema.exception.ConstraintsException; |
6 | 6 | import io.frictionlessdata.tableschema.util.JsonUtil; |
7 | 7 | import org.junit.jupiter.api.Assertions; |
| 8 | +import org.junit.jupiter.api.DisplayName; |
8 | 9 | import org.junit.jupiter.api.Test; |
9 | 10 |
|
10 | 11 | import java.math.BigInteger; |
@@ -95,7 +96,8 @@ public void testMinAndMaxLengthString() throws Exception{ |
95 | 96 | violatedConstraints = field.checkConstraintViolations(valueLength49); |
96 | 97 | Assertions.assertTrue(violatedConstraints.containsKey(Field.CONSTRAINT_KEY_MAX_LENGTH)); |
97 | 98 |
|
98 | | - assertThrows(ConstraintsException.class, () -> {field.castValue("This string length is greater than 45 characters.");}); |
| 99 | + ConstraintsException ex = assertThrows(ConstraintsException.class, () -> {field.castValue("This string length is greater than 45 characters.");}); |
| 100 | + Assertions.assertEquals("Field 'test' value 'This string length is greater than 45 characters.' violates constraint(s) [maxLength]", ex.getMessage()); |
99 | 101 | } |
100 | 102 |
|
101 | 103 | @Test |
@@ -783,6 +785,26 @@ public void testEnumYearMonth(){ |
783 | 785 | } |
784 | 786 |
|
785 | 787 |
|
| 788 | + @Test |
| 789 | + @DisplayName("Test our validation message shows both pattern and maxLength constraints violated") |
| 790 | + public void testPatternAndMaxlength(){ |
| 791 | + Map<String, Object> violatedConstraints = null; |
| 792 | + |
| 793 | + Map<String, Object> constraints = new HashMap<>(); |
| 794 | + constraints.put(Field.CONSTRAINT_KEY_PATTERN, "testing[0-9]+"); |
| 795 | + constraints.put(Field.CONSTRAINT_KEY_MAX_LENGTH, 45); |
| 796 | + |
| 797 | + StringField field = new StringField("test", null, null, null, null, constraints, null, null); |
| 798 | + |
| 799 | + String valueLength49 = field.castValue("This string length is greater than 45 characters.", false, null); |
| 800 | + violatedConstraints = field.checkConstraintViolations(valueLength49); |
| 801 | + Assertions.assertTrue(violatedConstraints.containsKey(Field.CONSTRAINT_KEY_MAX_LENGTH)); |
| 802 | + Assertions.assertTrue(violatedConstraints.containsKey(Field.CONSTRAINT_KEY_PATTERN)); |
| 803 | + |
| 804 | + ConstraintsException ex = assertThrows(ConstraintsException.class, () -> {field.castValue("This string length is greater than 45 characters.");}); |
| 805 | + Assertions.assertEquals("Field 'test' value 'This string length is greater than 45 characters.' violates constraint(s) [pattern, maxLength]", ex.getMessage()); |
| 806 | + } |
| 807 | + |
786 | 808 | private JsonNode createJsonNode(Object obj) { |
787 | 809 | return JsonUtil.getInstance().createNode(obj); |
788 | 810 | } |
|
0 commit comments