@TestFactory
@DisplayName("tests for logical type time field conversions")
public List<DynamicTest> testTimeFieldConverter() {
SinkFieldConverter converter = new TimeFieldConverter();
List<DynamicTest> tests = new ArrayList<>();
new ArrayList<>(Arrays.asList(
java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()),
java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.NOON, ZoneOffset.systemDefault()).toInstant())
)).forEach(
el -> tests.add(dynamicTest("conversion with "
+ converter.getClass().getSimpleName() + " for "+el,
() -> assertEquals(el.toInstant().getEpochSecond()*1000,
((BsonDateTime)converter.toBson(el)).getValue())
))
);
tests.add(dynamicTest("optional type conversions", () -> {
Schema valueOptionalDefault = Time.builder().optional().defaultValue(
java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant())
);
assertAll("checks",
() -> assertThrows(DataException.class, () -> converter.toBson(null, Time.SCHEMA)),
() -> assertEquals(new BsonNull(), converter.toBson(null, Time.builder().optional())),
() -> assertEquals(((java.util.Date)valueOptionalDefault.defaultValue()).toInstant().getEpochSecond()*1000,
((BsonDateTime)converter.toBson(null, valueOptionalDefault)).getValue())
);
}));
return tests;
}