|
20 | 20 | import static com.mongodb.kafka.connect.source.schema.AvroSchemaDefaults.DEFAULT_AVRO_VALUE_SCHEMA; |
21 | 21 | import static com.mongodb.kafka.connect.source.schema.AvroSchemaDefaults.DEFAULT_KEY_SCHEMA; |
22 | 22 | import static com.mongodb.kafka.connect.source.schema.AvroSchemaDefaults.DEFAULT_VALUE_SCHEMA; |
23 | | -import static com.mongodb.kafka.connect.source.schema.BsonDocumentToSchema.generateName; |
| 23 | +import static com.mongodb.kafka.connect.source.schema.BsonDocumentToSchema.DEFAULT_FIELD_NAME; |
24 | 24 | import static com.mongodb.kafka.connect.source.schema.SchemaUtils.assertSchemaAndValueEquals; |
25 | 25 | import static java.lang.String.format; |
26 | 26 | import static java.util.Arrays.asList; |
@@ -155,60 +155,75 @@ void testAvroSchemaAndValueProducer() { |
155 | 155 | @Test |
156 | 156 | @DisplayName("test infer schema and value producer") |
157 | 157 | void testInferSchemaAndValueProducer() { |
158 | | - |
159 | | - String fieldName = "default"; |
160 | 158 | Schema expectedSchema = |
161 | | - nameAndBuildSchema( |
162 | | - SchemaBuilder.struct() |
163 | | - .field( |
164 | | - "arrayComplex", |
165 | | - SchemaBuilder.array( |
166 | | - nameAndBuildOptionalSchema( |
167 | | - SchemaBuilder.struct().field("a", Schema.OPTIONAL_INT32_SCHEMA), |
168 | | - "a")) |
169 | | - .optional() |
170 | | - .build()) |
171 | | - .field( |
172 | | - "arrayComplexMixedTypes", |
173 | | - SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build()) |
174 | | - .field( |
175 | | - "arrayEmpty", |
176 | | - SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build()) |
177 | | - .field( |
178 | | - "arrayMixedTypes", |
179 | | - SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build()) |
180 | | - .field( |
181 | | - "arraySimple", |
182 | | - SchemaBuilder.array(Schema.OPTIONAL_INT32_SCHEMA).optional().build()) |
183 | | - .field("binary", Schema.OPTIONAL_BYTES_SCHEMA) |
184 | | - .field("boolean", Schema.OPTIONAL_BOOLEAN_SCHEMA) |
185 | | - .field("code", Schema.OPTIONAL_STRING_SCHEMA) |
186 | | - .field("codeWithScope", Schema.OPTIONAL_STRING_SCHEMA) |
187 | | - .field("dateTime", Timestamp.builder().optional().build()) |
188 | | - .field("decimal128", Decimal.builder(1).optional().build()) |
189 | | - .field( |
190 | | - "document", |
191 | | - nameAndBuildOptionalSchema( |
192 | | - SchemaBuilder.struct().field("a", Schema.OPTIONAL_INT32_SCHEMA), |
193 | | - "document")) |
194 | | - .field("double", Schema.OPTIONAL_FLOAT64_SCHEMA) |
195 | | - .field("int32", Schema.OPTIONAL_INT32_SCHEMA) |
196 | | - .field("int64", Schema.OPTIONAL_INT64_SCHEMA) |
197 | | - .field("maxKey", Schema.OPTIONAL_STRING_SCHEMA) |
198 | | - .field("minKey", Schema.OPTIONAL_STRING_SCHEMA) |
199 | | - .field("null", Schema.OPTIONAL_STRING_SCHEMA) |
200 | | - .field("objectId", Schema.OPTIONAL_STRING_SCHEMA) |
201 | | - .field("regex", Schema.OPTIONAL_STRING_SCHEMA) |
202 | | - .field("string", Schema.OPTIONAL_STRING_SCHEMA) |
203 | | - .field("symbol", Schema.OPTIONAL_STRING_SCHEMA) |
204 | | - .field("timestamp", Timestamp.builder().optional().build()) |
205 | | - .field("undefined", Schema.OPTIONAL_STRING_SCHEMA), |
206 | | - fieldName); |
| 159 | + SchemaBuilder.struct() |
| 160 | + .name(DEFAULT_FIELD_NAME) |
| 161 | + .field( |
| 162 | + "arrayComplex", |
| 163 | + SchemaBuilder.array( |
| 164 | + SchemaBuilder.struct() |
| 165 | + .field("a", Schema.OPTIONAL_INT32_SCHEMA) |
| 166 | + .name("arrayComplex_a") |
| 167 | + .optional() |
| 168 | + .build()) |
| 169 | + .optional() |
| 170 | + .name("arrayComplex") |
| 171 | + .build()) |
| 172 | + .field( |
| 173 | + "arrayComplexMixedTypes", |
| 174 | + SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA) |
| 175 | + .optional() |
| 176 | + .name("arrayComplexMixedTypes") |
| 177 | + .build()) |
| 178 | + .field( |
| 179 | + "arrayEmpty", |
| 180 | + SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA) |
| 181 | + .optional() |
| 182 | + .name("arrayEmpty") |
| 183 | + .build()) |
| 184 | + .field( |
| 185 | + "arrayMixedTypes", |
| 186 | + SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA) |
| 187 | + .optional() |
| 188 | + .name("arrayMixedTypes") |
| 189 | + .build()) |
| 190 | + .field( |
| 191 | + "arraySimple", |
| 192 | + SchemaBuilder.array(Schema.OPTIONAL_INT32_SCHEMA) |
| 193 | + .optional() |
| 194 | + .name("arraySimple") |
| 195 | + .build()) |
| 196 | + .field("binary", Schema.OPTIONAL_BYTES_SCHEMA) |
| 197 | + .field("boolean", Schema.OPTIONAL_BOOLEAN_SCHEMA) |
| 198 | + .field("code", Schema.OPTIONAL_STRING_SCHEMA) |
| 199 | + .field("codeWithScope", Schema.OPTIONAL_STRING_SCHEMA) |
| 200 | + .field("dateTime", Timestamp.builder().optional().build()) |
| 201 | + .field("decimal128", Decimal.builder(1).optional().build()) |
| 202 | + .field( |
| 203 | + "document", |
| 204 | + SchemaBuilder.struct() |
| 205 | + .field("a", Schema.OPTIONAL_INT32_SCHEMA) |
| 206 | + .name("document") |
| 207 | + .optional() |
| 208 | + .build()) |
| 209 | + .field("double", Schema.OPTIONAL_FLOAT64_SCHEMA) |
| 210 | + .field("int32", Schema.OPTIONAL_INT32_SCHEMA) |
| 211 | + .field("int64", Schema.OPTIONAL_INT64_SCHEMA) |
| 212 | + .field("maxKey", Schema.OPTIONAL_STRING_SCHEMA) |
| 213 | + .field("minKey", Schema.OPTIONAL_STRING_SCHEMA) |
| 214 | + .field("null", Schema.OPTIONAL_STRING_SCHEMA) |
| 215 | + .field("objectId", Schema.OPTIONAL_STRING_SCHEMA) |
| 216 | + .field("regex", Schema.OPTIONAL_STRING_SCHEMA) |
| 217 | + .field("string", Schema.OPTIONAL_STRING_SCHEMA) |
| 218 | + .field("symbol", Schema.OPTIONAL_STRING_SCHEMA) |
| 219 | + .field("timestamp", Timestamp.builder().optional().build()) |
| 220 | + .field("undefined", Schema.OPTIONAL_STRING_SCHEMA) |
| 221 | + .build(); |
207 | 222 |
|
208 | 223 | Schema arrayComplexValueSchema = expectedSchema.field("arrayComplex").schema().valueSchema(); |
209 | 224 | Schema documentSchema = expectedSchema.field("document").schema(); |
210 | 225 |
|
211 | | - SchemaAndValue expectedValue = |
| 226 | + SchemaAndValue expectedSchemaAndValue = |
212 | 227 | new SchemaAndValue( |
213 | 228 | expectedSchema, |
214 | 229 | new Struct(expectedSchema) |
@@ -247,7 +262,7 @@ void testInferSchemaAndValueProducer() { |
247 | 262 | new InferSchemaAndValueProducer(SIMPLE_JSON_WRITER_SETTINGS); |
248 | 263 |
|
249 | 264 | assertSchemaAndValueEquals( |
250 | | - expectedValue, valueProducer.get(BsonDocument.parse(FULL_DOCUMENT_JSON))); |
| 265 | + expectedSchemaAndValue, valueProducer.get(BsonDocument.parse(FULL_DOCUMENT_JSON))); |
251 | 266 | } |
252 | 267 |
|
253 | 268 | @Test |
@@ -340,14 +355,6 @@ static Struct generateExpectedValue(final boolean simplified) { |
340 | 355 | }; |
341 | 356 | } |
342 | 357 |
|
343 | | - static Schema nameAndBuildSchema(final SchemaBuilder builder, final String fieldName) { |
344 | | - return builder.name(generateName(builder, fieldName)).build(); |
345 | | - } |
346 | | - |
347 | | - static Schema nameAndBuildOptionalSchema(final SchemaBuilder builder, final String fieldName) { |
348 | | - return builder.name(generateName(builder, fieldName)).optional().build(); |
349 | | - } |
350 | | - |
351 | 358 | static String getFullDocument(final boolean simplified) { |
352 | 359 | return simplified ? SIMPLIFIED_FULL_DOCUMENT_JSON : FULL_DOCUMENT_JSON; |
353 | 360 | } |
|
0 commit comments