@@ -36,12 +36,12 @@ public abstract class AbstractJsonDSLTest {
36
36
@ Parameterized .Parameter (2 )
37
37
public Object expected ;
38
38
@ Parameterized .Parameter (3 )
39
- public Field <String > fieldToSelect ;
39
+ public Field <? > fieldToSelect ;
40
40
41
- static List <Object []> generateParams (String baseName , BiFunction <String , Field <String >, List <Params >> testParamFunc ) {
41
+ static List <Object []> generateParams (String baseName , BiFunction <String , Field <Json >, List <Params >> testParamFunc ) {
42
42
List <Object []> params = new ArrayList <>();
43
43
for (String type : Arrays .asList ("json" , "jsonb" )) {
44
- Field <String > f = "json" .equals (type ) ? JSON_TEST .DATA : JSON_TEST .DATAB ;
44
+ Field <Json > f = "json" .equals (type ) ? JSON_TEST .DATA : JSON_TEST .DATAB ;
45
45
List <Params > paramList = testParamFunc .apply (type , f );
46
46
for (Params p : paramList ) {
47
47
String name = String .format ("%s_%s_%s" , baseName , p .name , type );
@@ -51,42 +51,62 @@ static List<Object[]> generateParams(String baseName, BiFunction<String, Field<S
51
51
return params ;
52
52
}
53
53
54
- static Params test (String name , Object expected , Field <String > field ) {
55
- return params (name , genericRow , expected , field );
54
+ static Params test (String name , String expected , Field <Json > fieldToSelect ) {
55
+ return params (name , genericRow , Json . ofNullable ( expected ), fieldToSelect );
56
56
}
57
57
58
- static Params arrayTest (String name , String expected , Field <String > field ) {
59
- return params (name , arrayRow , expected , field );
58
+ static Params stringTest (String name , String expected , Field <String > fieldToSelect ) {
59
+ return params (name , genericRow , expected , fieldToSelect );
60
60
}
61
61
62
- private static Params params (String name , String rowName , Object expected , Field <String > field ) {
63
- return new Params (name , rowName , expected , field );
62
+ static Params test (String name , JsonNode expected , Field <?> fieldToSelect ) {
63
+ return params (name , genericRow , expected , fieldToSelect );
64
+ }
65
+
66
+ static Params testNull (String name , Field <?> fieldToSelect ) {
67
+ return params (name , genericRow , null , fieldToSelect );
68
+ }
69
+
70
+ static Params arrayTest (String name , String expected , Field <Json > fieldToSelect ) {
71
+ return params (name , arrayRow , Json .ofNullable (expected ), fieldToSelect );
72
+ }
73
+
74
+ static Params arrayStringTest (String name , String expected , Field <String > fieldToSelect ) {
75
+ return params (name , arrayRow , expected , fieldToSelect );
76
+ }
77
+
78
+ private static Params params (String name , String rowName , Object expected , Field <?> fieldToSelect ) {
79
+ return new Params (name , rowName , expected , fieldToSelect );
64
80
}
65
81
66
82
@ Before
67
83
public void setUp () {
68
84
dsl .deleteFrom (JSON_TEST ).execute ();
69
85
70
86
String template = "{\" obj\" : {\" i\" : 5521, \" b\" : true}, \" arr\" : [{\" d\" : 4408}, 10, true, \" s\" ], \" num\" : 1337, \" str\" : \" Hello, %s world!\" , \" n\" : null}" ;
71
- String artmpl = "[{\" d\" : 4408}, 10, true, \" %s array\" ]" ;
87
+ String arrayTemplate = "[{\" d\" : 4408}, 10, true, \" %s array\" ]" ;
72
88
assertEquals (2 , dsl .insertInto (JSON_TEST )
73
89
.columns (JSON_TEST .NAME , JSON_TEST .DATA , JSON_TEST .DATAB )
74
- .values (genericRow , String .format (template , "json" ), String .format (template , "jsonb" ))
75
- .values (arrayRow , String .format (artmpl , "json" ), String .format (artmpl , "jsonb" ))
90
+ .values (genericRow , Json . of ( String .format (template , "json" )), Json . of ( String .format (template , "jsonb" ) ))
91
+ .values (arrayRow , Json . of ( String .format (arrayTemplate , "json" )), Json . of ( String .format (arrayTemplate , "jsonb" ) ))
76
92
.execute ());
77
93
assertEquals (2 , dsl .fetchCount (JSON_TEST ));
78
94
}
79
95
80
96
@ Test
81
97
public void test () {
82
- String data = select (rowName , fieldToSelect );
98
+ Object data = select (rowName , fieldToSelect );
83
99
84
100
if (expected == null ) {
85
101
assertNull (data );
86
- } else if (expected instanceof String ) {
102
+ } else if (expected instanceof String || expected instanceof Json ) {
87
103
assertEquals (expected , data );
88
104
} else if (expected instanceof JsonNode ) {
89
- assertEquals (expected , toNode (data ));
105
+ if (data instanceof Json ) {
106
+ assertEquals (expected , toNode (((Json ) data ).getValue ()));
107
+ } else {
108
+ assertEquals (expected , toNode ((String ) data ));
109
+ }
90
110
} else {
91
111
throw new IllegalArgumentException ("Cannot assert object: " + expected .getClass ());
92
112
}
@@ -100,7 +120,7 @@ static JsonNode toNode(String s) {
100
120
}
101
121
}
102
122
103
- private static String select (String rowName , Field <String > field ) {
123
+ private Object select (String rowName , Field <? > field ) {
104
124
return dsl .select (field )
105
125
.from (JSON_TEST )
106
126
.where (JSON_TEST .NAME .eq (rowName ))
@@ -111,9 +131,9 @@ static class Params {
111
131
final String name ;
112
132
final String dataSet ;
113
133
final Object expected ;
114
- final Field <String > fieldToSelect ;
134
+ final Field <? > fieldToSelect ;
115
135
116
- public Params (String name , String dataSet , Object expected , Field <String > fieldToSelect ) {
136
+ public Params (String name , String dataSet , Object expected , Field <? > fieldToSelect ) {
117
137
this .name = name ;
118
138
this .dataSet = dataSet ;
119
139
this .expected = expected ;
0 commit comments