34
34
import java .util .Arrays ;
35
35
import java .util .HashMap ;
36
36
import java .util .LinkedHashMap ;
37
+ import java .util .List ;
37
38
import java .util .Map ;
38
39
39
40
import static org .junit .jupiter .api .Assertions .*;
@@ -45,7 +46,8 @@ public class RecordConverterTest {
45
46
public static Schema OBJ_SCHEMA_1 ;
46
47
public static Struct OBJ_STRUCT_1 ;
47
48
public static Map OBJ_MAP_1 ;
48
- public static BsonDocument EXPECTED_BSON_DOC_BYTES_1 ;
49
+ public static BsonDocument EXPECTED_BSON_DOC_OBJ_STRUCT_1 ;
50
+ public static BsonDocument EXPECTED_BSON_DOC_OBJ_MAP_1 ;
49
51
public static BsonDocument EXPECTED_BSON_DOC_RAW_1 ;
50
52
51
53
@ BeforeAll
@@ -82,6 +84,8 @@ public static void initializeTestData() {
82
84
.build ())
83
85
)
84
86
.field ("mySubDoc2" , SchemaBuilder .map (Schema .STRING_SCHEMA , Schema .INT32_SCHEMA ).build ())
87
+ .field ( "myMapOfStrings" , SchemaBuilder .map (Schema .STRING_SCHEMA , SchemaBuilder .array (Schema .STRING_SCHEMA ).build ()).build ())
88
+ .field ( "myMapOfInts" , SchemaBuilder .map (Schema .STRING_SCHEMA , SchemaBuilder .array (Schema .INT32_SCHEMA ).build ()).build ())
85
89
.field ("myBytes" , Schema .BYTES_SCHEMA )
86
90
.field ("myDate" , Date .SCHEMA )
87
91
.field ("myTimestamp" , Timestamp .SCHEMA )
@@ -108,6 +112,16 @@ public static void initializeTestData() {
108
112
)
109
113
)
110
114
.put ("mySubDoc2" ,new HashMap <String ,Integer >(){{ put ("k1" ,9 ); put ("k2" ,8 ); put ("k3" ,7 );}})
115
+ .put ("myMapOfStrings" , new HashMap <String , List <String >>(){{
116
+ put ("k1" , Arrays .asList ("v1-a" , "v1-b" ));
117
+ put ("k2" , Arrays .asList ("v2-a" ));
118
+ put ("k3" , Arrays .asList ("v3-a" , "v3-b" , "v3-c" ));
119
+ }})
120
+ .put ("myMapOfInts" , new HashMap <String , List <Integer >>(){{
121
+ put ("k1" , Arrays .asList (11 , 12 ));
122
+ put ("k2" , Arrays .asList (21 ));
123
+ put ("k3" , Arrays .asList (31 , 32 , 33 ));
124
+ }})
111
125
.put ("myBytes" , new byte []{75 , 97 , 102 , 107 , 97 , 32 , 114 , 111 , 99 , 107 , 115 , 33 })
112
126
.put ("myDate" , java .util .Date .from (ZonedDateTime .of (
113
127
LocalDate .of (2017 ,3 ,17 ), LocalTime .MIDNIGHT , ZoneOffset .systemDefault ()
@@ -154,7 +168,7 @@ public static void initializeTestData() {
154
168
// thus I'm cheating a little by using a Decimal128 here...
155
169
OBJ_MAP_1 .put ("myDecimal" , Decimal128 .parse ("12345.6789" ));
156
170
157
- EXPECTED_BSON_DOC_BYTES_1 = new BsonDocument ()
171
+ BsonDocument commonMapAndStructFields = new BsonDocument ()
158
172
.append ("_id" , new BsonString ("1234567890" ))
159
173
.append ("myString" , new BsonString ("some foo bla text" ))
160
174
.append ("myInt" , new BsonInt32 (42 ))
@@ -192,7 +206,32 @@ public static void initializeTestData() {
192
206
))
193
207
.append ("myDecimal" , new BsonDecimal128 (new Decimal128 (new BigDecimal ("12345.6789" ))));
194
208
195
- EXPECTED_BSON_DOC_RAW_1 = EXPECTED_BSON_DOC_BYTES_1 .clone ();
209
+ EXPECTED_BSON_DOC_OBJ_STRUCT_1 = commonMapAndStructFields .clone ()
210
+ .append ("myMapOfStrings" , new BsonDocument ("k1" , new BsonInt32 (9 ))
211
+ .append ("k1" , new BsonArray (Arrays .asList (
212
+ new BsonString ("v1-a" ),
213
+ new BsonString ("v1-b" ))))
214
+ .append ("k2" , new BsonArray (Arrays .asList (
215
+ new BsonString ("v2-a" ))))
216
+ .append ("k3" , new BsonArray (Arrays .asList (
217
+ new BsonString ("v3-a" ),
218
+ new BsonString ("v3-b" ),
219
+ new BsonString ("v3-c" ))))
220
+ ).append ("myMapOfInts" , new BsonDocument ("k1" , new BsonInt32 (9 ))
221
+ .append ("k1" , new BsonArray (Arrays .asList (
222
+ new BsonInt32 (11 ),
223
+ new BsonInt32 (12 ))))
224
+ .append ("k2" , new BsonArray (Arrays .asList (
225
+ new BsonInt32 (21 ))))
226
+ .append ("k3" , new BsonArray (Arrays .asList (
227
+ new BsonInt32 (31 ),
228
+ new BsonInt32 (32 ),
229
+ new BsonInt32 (33 ))))
230
+ );
231
+
232
+ EXPECTED_BSON_DOC_OBJ_MAP_1 = commonMapAndStructFields .clone ();
233
+
234
+ EXPECTED_BSON_DOC_RAW_1 = commonMapAndStructFields .clone ();
196
235
EXPECTED_BSON_DOC_RAW_1 .replace ("myBytes" ,new BsonString ("S2Fma2Egcm9ja3Mh" ));
197
236
EXPECTED_BSON_DOC_RAW_1 .replace ("myDate" ,new BsonInt64 (1489705200000L ));
198
237
EXPECTED_BSON_DOC_RAW_1 .replace ("myTimestamp" ,new BsonInt64 (1489705200000L ));
@@ -216,7 +255,7 @@ public void testJsonRawStringConversion() {
216
255
public void testAvroOrJsonWithSchemaConversion () {
217
256
RecordConverter converter = new AvroJsonSchemafulRecordConverter ();
218
257
assertAll ("" ,
219
- () -> assertEquals (EXPECTED_BSON_DOC_BYTES_1 , converter .convert (OBJ_SCHEMA_1 , OBJ_STRUCT_1 )),
258
+ () -> assertEquals (EXPECTED_BSON_DOC_OBJ_STRUCT_1 , converter .convert (OBJ_SCHEMA_1 , OBJ_STRUCT_1 )),
220
259
() -> assertThrows (DataException .class , () -> converter .convert (OBJ_SCHEMA_1 ,null )),
221
260
() -> assertThrows (DataException .class , () -> converter .convert (null , OBJ_STRUCT_1 )),
222
261
() -> assertThrows (DataException .class , () -> converter .convert (null ,null ))
@@ -228,7 +267,7 @@ public void testAvroOrJsonWithSchemaConversion() {
228
267
public void testJsonObjectConversion () {
229
268
RecordConverter converter = new JsonSchemalessRecordConverter ();
230
269
assertAll ("" ,
231
- () -> assertEquals (EXPECTED_BSON_DOC_BYTES_1 , converter .convert (null , OBJ_MAP_1 )),
270
+ () -> assertEquals (EXPECTED_BSON_DOC_OBJ_MAP_1 , converter .convert (null , OBJ_MAP_1 )),
232
271
() -> assertThrows (DataException .class , () -> converter .convert (null ,null ))
233
272
);
234
273
}
0 commit comments