Skip to content

Commit 093c737

Browse files
authored
Merge pull request #47 from avaje/feature/avaje-pastFuture
Add tests for nested validation with nullable
2 parents db35727 + a6ac36f commit 093c737

File tree

3 files changed

+109
-1
lines changed

3 files changed

+109
-1
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package example.avaje.nested;
2+
3+
import io.avaje.lang.Nullable;
4+
import io.avaje.validation.ValidPojo;
5+
import io.avaje.validation.constraints.NotNull;
6+
import jakarta.validation.constraints.NotBlank;
7+
import jakarta.validation.constraints.Size;
8+
9+
@ValidPojo
10+
public class AContactWithNullable {
11+
12+
@NotBlank
13+
public String firstName;
14+
@Size(max = 5)
15+
public String lastName;
16+
17+
@Nullable
18+
public AAddress address;
19+
20+
public AContactWithNullable(String firstName, String lastName) {
21+
this.firstName = firstName;
22+
this.lastName = lastName;
23+
}
24+
25+
}

blackbox-test/src/test/java/example/avaje/nested/ANestedTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class ANestedTest {
1313
final Validator validator = Validator.builder().build();
1414

1515
@Test
16-
void valid() {
16+
void validateNested() {
1717
var contact = new AContact("Rob", "TooLargeForHere");
1818
contact.address = new AAddress("", "TooBigHere", -1);
1919

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package example.avaje.nested;
2+
3+
import io.avaje.validation.ConstraintViolationException;
4+
import io.avaje.validation.Validator;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.util.ArrayList;
8+
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
class ANestedWithNullableTest {
12+
13+
final Validator validator = Validator.builder().build();
14+
15+
@Test
16+
void validateNestedSkipNullAddress() {
17+
var contact = new AContactWithNullable("Rob", "TooLargeForHere");
18+
contact.address = null;
19+
20+
try {
21+
validator.validate(contact);
22+
} catch (ConstraintViolationException e) {
23+
var violations = new ArrayList<>(e.violations());
24+
assertThat(violations).hasSize(1);
25+
26+
var v0 = violations.get(0);
27+
assertThat(v0.path()).isEqualTo("");
28+
assertThat(v0.propertyName()).isEqualTo("lastName");
29+
assertThat(v0.message()).isEqualTo("size must be between 0 and 5");
30+
}
31+
}
32+
33+
@Test
34+
void validateNestedAddress() {
35+
var contact = new AContactWithNullable("Rob", "TooLargeForHere");
36+
contact.address = new AAddress("line1", "ok", 12);
37+
38+
try {
39+
validator.validate(contact);
40+
} catch (ConstraintViolationException e) {
41+
var violations = new ArrayList<>(e.violations());
42+
assertThat(violations).hasSize(1);
43+
44+
var v0 = violations.get(0);
45+
assertThat(v0.path()).isEqualTo("");
46+
assertThat(v0.propertyName()).isEqualTo("lastName");
47+
assertThat(v0.message()).isEqualTo("size must be between 0 and 5");
48+
}
49+
}
50+
51+
@Test
52+
void validateNested() {
53+
var contact = new AContactWithNullable("Rob", "TooLargeForHere");
54+
contact.address = new AAddress("", "TooBigHere", -1);
55+
56+
try {
57+
validator.validate(contact);
58+
} catch (ConstraintViolationException e) {
59+
var violations = new ArrayList<>(e.violations());
60+
assertThat(violations).hasSize(4);
61+
62+
var v0 = violations.get(0);
63+
assertThat(v0.path()).isEqualTo("");
64+
assertThat(v0.propertyName()).isEqualTo("lastName");
65+
assertThat(v0.message()).isEqualTo("size must be between 0 and 5");
66+
67+
var v1 = violations.get(1);
68+
assertThat(v1.path()).isEqualTo("address");
69+
assertThat(v1.propertyName()).isEqualTo("line1");
70+
assertThat(v1.message()).isEqualTo("must not be blank");
71+
72+
var v2 = violations.get(2);
73+
assertThat(v2.path()).isEqualTo("address");
74+
assertThat(v2.propertyName()).isEqualTo("line2");
75+
assertThat(v2.message()).isEqualTo("size must be between 0 and 4");
76+
77+
var v3 = violations.get(3);
78+
assertThat(v3.path()).isEqualTo("address");
79+
assertThat(v3.propertyName()).isEqualTo("longValue");
80+
assertThat(v3.message()).isEqualTo("must be greater than 0");
81+
}
82+
}
83+
}

0 commit comments

Comments
 (0)