3
3
import dev .harrel .jsonschema .providers .JacksonNode ;
4
4
import org .junit .jupiter .api .Test ;
5
5
import org .junit .jupiter .params .ParameterizedTest ;
6
+ import org .junit .jupiter .params .provider .Arguments ;
6
7
import org .junit .jupiter .params .provider .EnumSource ;
8
+ import org .junit .jupiter .params .provider .MethodSource ;
9
+
10
+ import java .net .URI ;
11
+ import java .util .stream .Stream ;
7
12
8
13
import static dev .harrel .jsonschema .ValidatorFactory .DefaultSchemaResolver ;
9
14
import static org .assertj .core .api .Assertions .assertThat ;
@@ -20,6 +25,26 @@ void shouldResolveAllSpecificationMetaSchemas(SpecificationVersion spec) {
20
25
assertThat (result .toJsonNode (new JacksonNode .Factory ())).isPresent ();
21
26
}
22
27
28
+ @ ParameterizedTest
29
+ @ EnumSource (SpecificationVersion .class )
30
+ void shouldHandleNonExistentSubSchemas (SpecificationVersion spec ) {
31
+ URI uri = URI .create (spec .getId ()).resolve ("meta/not-found" );
32
+ DefaultSchemaResolver resolver = new DefaultSchemaResolver ();
33
+ SchemaResolver .Result result = resolver .resolve (uri .toString ());
34
+
35
+ assertThat (result .isEmpty ()).isTrue ();
36
+ }
37
+
38
+ @ ParameterizedTest
39
+ @ MethodSource ("getDraft2019SubSchemas" )
40
+ void shouldResolveDraft2019SubSchemas (URI uri ) {
41
+ DefaultSchemaResolver resolver = new DefaultSchemaResolver ();
42
+ SchemaResolver .Result result = resolver .resolve (uri .toString ());
43
+
44
+ assertThat (result .isEmpty ()).isFalse ();
45
+ assertThat (result .toJsonNode (new JacksonNode .Factory ())).isPresent ();
46
+ }
47
+
23
48
@ Test
24
49
void shouldHandleNonExistentResource () {
25
50
DefaultSchemaResolver resolver = new DefaultSchemaResolver ();
@@ -38,4 +63,17 @@ void shouldCacheResults() {
38
63
assertThat (result .isEmpty ()).isFalse ();
39
64
assertThat (result .toJsonNode (new JacksonNode .Factory ())).isPresent ();
40
65
}
66
+
67
+ static Stream <Arguments > getDraft2019SubSchemas () {
68
+ return Stream .of (
69
+ "meta/applicator" ,
70
+ "meta/content" ,
71
+ "meta/core" ,
72
+ "meta/format" ,
73
+ "meta/meta-data" ,
74
+ "meta/validation"
75
+ )
76
+ .map (uri -> URI .create (SpecificationVersion .DRAFT2019_09 .getId ()).resolve (uri ))
77
+ .map (Arguments ::of );
78
+ }
41
79
}
0 commit comments