1 package de.juplo.jpa.converters;
3 import de.juplo.jpa.converters.TimeConversions.FixedZoneIdStrategy;
4 import de.juplo.jpa.converters.TimeConversions.FixedZoneOffsetStrategy;
5 import java.time.OffsetDateTime;
6 import java.time.ZoneId;
7 import java.time.ZoneOffset;
8 import java.time.ZonedDateTime;
9 import javax.persistence.EntityManager;
10 import javax.persistence.EntityTransaction;
11 import javax.persistence.Persistence;
12 import org.junit.Test;
13 import static org.junit.Assert.assertEquals;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
22 public class JPAConverterTest
24 final static Logger log = LoggerFactory.getLogger(JPAConverterTest.class);
28 Persistence.createEntityManagerFactory("test").createEntityManager();
30 ZonedDateTime zdt = ZonedDateTime.now();
31 OffsetDateTime odt = OffsetDateTime.now();
33 ZoneId defaultZone = ZoneId.systemDefault();
34 ZoneId otherZone = defaultZone.getId().equals("America/New_York") ? ZoneId.of("Europe/Berlin") : ZoneId.of("America/New_York");
36 ZoneOffset defaultOffset = defaultZone.getRules().getOffset(odt.toLocalDateTime());
37 ZoneOffset otherOffset = ZoneOffset.ofTotalSeconds(defaultOffset.getTotalSeconds() + 3 * 60 * 60);
41 public void testOffsetDateTime()
43 EierlegendeWollmilchSau ews;
46 TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(defaultOffset));
47 ews = new EierlegendeWollmilchSau();
51 assertEquals(odt, ews.odt);
53 TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(otherOffset));
54 ews = new EierlegendeWollmilchSau();
58 assertEquals(odt.toInstant(), ews.odt.toInstant());
62 public void testZonedDateTime()
64 EierlegendeWollmilchSau ews;
67 TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(defaultZone));
68 ews = new EierlegendeWollmilchSau();
72 assertEquals(zdt, ews.zdt);
74 TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(otherZone));
75 ews = new EierlegendeWollmilchSau();
79 assertEquals(zdt.toInstant(), ews.zdt.toInstant());
83 private Long persist(EierlegendeWollmilchSau ews)
85 EntityTransaction tx = em.getTransaction();
88 log.info("persisting {}", ews);
94 private EierlegendeWollmilchSau retrieve(Long id)
96 EierlegendeWollmilchSau ews;
97 EntityTransaction tx = em.getTransaction();
99 ews = em.find(EierlegendeWollmilchSau.class, id);
101 log.info("retrieved {}", ews);