|
1 | 1 | package com.retailsvc.http.validate; |
2 | 2 |
|
| 3 | +import static org.assertj.core.api.Assertions.assertThat; |
3 | 4 | import static org.assertj.core.api.Assertions.assertThatThrownBy; |
4 | 5 |
|
5 | 6 | import com.retailsvc.http.ValidationException; |
| 7 | +import com.retailsvc.http.spec.schema.AlwaysSchema; |
6 | 8 | import com.retailsvc.http.spec.schema.BooleanSchema; |
| 9 | +import com.retailsvc.http.spec.schema.NeverSchema; |
7 | 10 | import com.retailsvc.http.spec.schema.NullSchema; |
8 | 11 | import com.retailsvc.http.spec.schema.OneOfSchema; |
9 | 12 | import com.retailsvc.http.spec.schema.TypeName; |
10 | 13 | import java.util.List; |
| 14 | +import java.util.Map; |
11 | 15 | import java.util.Set; |
12 | 16 | import org.junit.jupiter.api.Test; |
13 | 17 |
|
@@ -49,4 +53,52 @@ void combinatorThrowsUnsupported() { |
49 | 53 | assertThatThrownBy(() -> v.validate("x", schema, "/v")) |
50 | 54 | .isInstanceOf(UnsupportedOperationException.class); |
51 | 55 | } |
| 56 | + |
| 57 | + @Test |
| 58 | + void alwaysSchemaAcceptsString() { |
| 59 | + v.validate("anything", new AlwaysSchema(), "/v"); |
| 60 | + } |
| 61 | + |
| 62 | + @Test |
| 63 | + void alwaysSchemaAcceptsInteger() { |
| 64 | + v.validate(42, new AlwaysSchema(), "/v"); |
| 65 | + } |
| 66 | + |
| 67 | + @Test |
| 68 | + void alwaysSchemaAcceptsObject() { |
| 69 | + v.validate(Map.of("a", 1), new AlwaysSchema(), "/v"); |
| 70 | + } |
| 71 | + |
| 72 | + @Test |
| 73 | + void alwaysSchemaAcceptsNull() { |
| 74 | + v.validate(null, new AlwaysSchema(), "/v"); |
| 75 | + } |
| 76 | + |
| 77 | + @Test |
| 78 | + void neverSchemaRejectsString() { |
| 79 | + assertThatThrownBy(() -> v.validate("anything", new NeverSchema(), "/v")) |
| 80 | + .isInstanceOf(ValidationException.class) |
| 81 | + .satisfies( |
| 82 | + t -> { |
| 83 | + var err = ((ValidationException) t).error(); |
| 84 | + assertThat(err.keyword()).isEqualTo("false"); |
| 85 | + assertThat(err.message()).contains("rejects all values"); |
| 86 | + }); |
| 87 | + } |
| 88 | + |
| 89 | + @Test |
| 90 | + void neverSchemaRejectsInteger() { |
| 91 | + assertThatThrownBy(() -> v.validate(42, new NeverSchema(), "/v")) |
| 92 | + .isInstanceOf(ValidationException.class) |
| 93 | + .extracting(t -> ((ValidationException) t).error().keyword()) |
| 94 | + .isEqualTo("false"); |
| 95 | + } |
| 96 | + |
| 97 | + @Test |
| 98 | + void neverSchemaRejectsNull() { |
| 99 | + assertThatThrownBy(() -> v.validate(null, new NeverSchema(), "/v")) |
| 100 | + .isInstanceOf(ValidationException.class) |
| 101 | + .extracting(t -> ((ValidationException) t).error().keyword()) |
| 102 | + .isEqualTo("false"); |
| 103 | + } |
52 | 104 | } |
0 commit comments