From 12f91bf7375f56d5232247c16b792e932ac64dd6 Mon Sep 17 00:00:00 2001
From: Arman Sharif <armandino@gmail.com>
Date: Sun, 19 Jun 2022 18:47:18 -0700
Subject: [PATCH] Test case for issue #244 related to deserializing
 ZonedDateTime (#245)

---
 .../failing/ZonedDateTimeIssue244Test.java    | 68 +++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/ZonedDateTimeIssue244Test.java

diff --git a/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/ZonedDateTimeIssue244Test.java b/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/ZonedDateTimeIssue244Test.java
new file mode 100644
index 00000000..7d8e0373
--- /dev/null
+++ b/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/ZonedDateTimeIssue244Test.java
@@ -0,0 +1,68 @@
+package com.fasterxml.jackson.datatype.jsr310.failing;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.ModuleTestBase;
+import org.junit.Test;
+
+import java.time.ZoneId;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test case for https://github.com/FasterXML/jackson-modules-java8/issues/244
+ */
+public class ZonedDateTimeIssue244Test extends ModuleTestBase
+{
+    private final ObjectMapper MAPPER = newMapper()
+            .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+    @Test
+    public void zoneIdUTC() throws JsonProcessingException
+    {
+        assertSerializeAndSerialize(ZonedDateTime.now(ZoneId.of("UTC")));
+    }
+
+    @Test
+    public void zoneOffsetUTC() throws JsonProcessingException
+    {
+        assertSerializeAndSerialize(ZonedDateTime.now(ZoneOffset.UTC)); // fails!
+    }
+
+    @Test
+    public void zoneOffsetNonUTC() throws JsonProcessingException
+    {
+        assertSerializeAndSerialize(ZonedDateTime.now(ZoneOffset.ofHours(-7))); // fails!
+    }
+
+    private void assertSerializeAndSerialize(final ZonedDateTime date) throws JsonProcessingException
+    {
+        final Example example1 = new Example(date);
+        final String json = MAPPER.writeValueAsString(example1);
+        final Example example2 = MAPPER.readValue(json, Example.class);
+
+        assertEquals(example1.getDate(), example2.getDate());
+    }
+
+    static class Example
+    {
+        private ZonedDateTime date;
+
+        public Example()
+        {
+        }
+
+        public Example(final ZonedDateTime date)
+        {
+            this.date = date;
+        }
+
+        public ZonedDateTime getDate()
+        {
+            return date;
+        }
+    }
+}