Implemented some test-cases
[jpa-converters] / src / test / java / de / juplo / jpa / converters / OffsetDateTimeConverterTest.java
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 (file)
index 0000000..36cb219
--- /dev/null
@@ -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());
+  }
+}