|
23 | 23 | import io.cdap.cdap.etl.api.FailureCollector; |
24 | 24 | import io.cdap.cdap.etl.api.validation.ValidationFailure; |
25 | 25 | import io.cdap.cdap.etl.mock.validation.MockFailureCollector; |
| 26 | +import io.cdap.plugin.gcp.bigquery.source.BigQuerySourceConfig; |
26 | 27 | import io.cdap.plugin.gcp.bigquery.util.BigQueryTypeSize.BigNumeric; |
27 | 28 | import io.cdap.plugin.gcp.bigquery.util.BigQueryTypeSize.Numeric; |
28 | 29 | import io.cdap.plugin.gcp.common.GCPUtils; |
@@ -478,4 +479,32 @@ public void testConvertFieldTypeJsonToString() { |
478 | 479 | Schema result = BigQueryUtil.convertFieldType(field, null, null); |
479 | 480 | Assert.assertEquals(expectedSchema, result); |
480 | 481 | } |
| 482 | + |
| 483 | + @Test |
| 484 | + public void testValidateFieldSchemaMatchesDate() { |
| 485 | + MockFailureCollector collector = new MockFailureCollector(); |
| 486 | + Field bigQueryField = Field.newBuilder("testFieldRepeatedDate", StandardSQLTypeName.DATE) |
| 487 | + .setMode(Field.Mode.REPEATED).build(); |
| 488 | + Schema.Field schemaField = Schema.Field.of("testFieldRepeatedDate", |
| 489 | + Schema.nullableOf(Schema.arrayOf(Schema.of(Schema.LogicalType.DATE)))); |
| 490 | + ValidationFailure failure = BigQueryUtil.validateFieldSchemaMatches(bigQueryField, schemaField, "dataset", |
| 491 | + "table", BigQuerySourceConfig.SUPPORTED_TYPES, collector); |
| 492 | + Assert.assertNull(failure); |
| 493 | + Assert.assertEquals(0, collector.getValidationFailures().size()); |
| 494 | + } |
| 495 | + |
| 496 | + @Test |
| 497 | + public void testValidateFieldSchemaNotMatchesDate() { |
| 498 | + MockFailureCollector collector = new MockFailureCollector(); |
| 499 | + Field bigQueryField = Field.newBuilder("testFieldRepeatedDate", StandardSQLTypeName.DATE) |
| 500 | + .setMode(Field.Mode.REPEATED).build(); |
| 501 | + Schema.Field schemaField = Schema.Field.of("testFieldRepeatedDate", |
| 502 | + Schema.nullableOf(Schema.arrayOf(Schema.of(Schema.Type.STRING)))); |
| 503 | + ValidationFailure failure = BigQueryUtil.validateFieldSchemaMatches(bigQueryField, schemaField, "dataset", |
| 504 | + "table", BigQuerySourceConfig.SUPPORTED_TYPES, collector); |
| 505 | + Assert.assertNotNull(failure); |
| 506 | + Assert.assertEquals(1, collector.getValidationFailures().size()); |
| 507 | + Assert.assertEquals("Field 'testFieldRepeatedDate' of type 'string' is incompatible with" + |
| 508 | + " column 'testFieldRepeatedDate' of type 'date' in BigQuery table 'dataset.table'.", failure.getMessage()); |
| 509 | + } |
481 | 510 | } |
0 commit comments