X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fjpa%2Fconverters%2FOffsetDateTimeConverterTest.java;fp=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fjpa%2Fconverters%2FOffsetDateTimeConverterTest.java;h=36cb219adac4676cbbc7849945842615d6311b1b;hb=2aeda6423279d79a8bc34b8ceb510fd41cec4955;hp=0000000000000000000000000000000000000000;hpb=1870491f00f6d583d6ebe9270bf69e13633c1bf7;p=jpa-converters diff --git a/src/test/java/de/juplo/jpa/converters/OffsetDateTimeConverterTest.java b/src/test/java/de/juplo/jpa/converters/OffsetDateTimeConverterTest.java new file mode 100644 index 0000000..36cb219 --- /dev/null +++ b/src/test/java/de/juplo/jpa/converters/OffsetDateTimeConverterTest.java @@ -0,0 +1,57 @@ +package de.juplo.jpa.converters; + +import de.juplo.jpa.converters.TimeConversions.FixedZoneOffsetStrategy; +import java.sql.Timestamp; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import static org.junit.Assert.assertEquals; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * + * @author Kai Moritz + */ +public class OffsetDateTimeConverterTest +{ + Logger log = LoggerFactory.getLogger(OffsetDateTimeConverterTest.class); + + OffsetDateTimeConverter converter = new OffsetDateTimeConverter(); + OffsetDateTime odt = OffsetDateTime.now(); + ZoneOffset defaultOffset = ZoneId.systemDefault().getRules().getOffset(odt.toLocalDateTime()); + ZoneOffset otherOffset = ZoneOffset.ofTotalSeconds(defaultOffset.getTotalSeconds() + 3 * 60 * 60); + + + @Test + public void testConvertToDatabaseColumn() + { + Timestamp ts; + + TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(defaultOffset)); + ts = converter.convertToDatabaseColumn(odt); + log.info("{}: {} -> {}", defaultOffset, odt, ts); + assertEquals(odt.toInstant(), ts.toInstant()); + + TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(otherOffset)); + ts = converter.convertToDatabaseColumn(odt); + log.info("{}: {} -> {}", otherOffset, odt, ts); + assertEquals(odt.toInstant(), OffsetDateTime.of(ts.toLocalDateTime(), otherOffset).toInstant()); + } + + @Test + public void testRoundtrip() + { + Timestamp ts; + + TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(defaultOffset)); + ts = converter.convertToDatabaseColumn(odt); + assertEquals(odt.toInstant(), converter.convertToEntityAttribute(ts).toInstant()); + + TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(otherOffset)); + ts = converter.convertToDatabaseColumn(odt); + assertEquals(odt.toInstant(), converter.convertToEntityAttribute(ts).toInstant()); + } +}