X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fjpa%2Fconverters%2FJPAConverterTest.java;h=0bc8b1dc4e88589429f80121377d296efaa851b9;hb=HEAD;hp=c9f87cf632f6d544280381c50bf4cc9d70c2a906;hpb=40f11af561b8e0095f2c4cfbbd2f87988fef93d7;p=jpa-converters diff --git a/src/test/java/de/juplo/jpa/converters/JPAConverterTest.java b/src/test/java/de/juplo/jpa/converters/JPAConverterTest.java index c9f87cf..0bc8b1d 100644 --- a/src/test/java/de/juplo/jpa/converters/JPAConverterTest.java +++ b/src/test/java/de/juplo/jpa/converters/JPAConverterTest.java @@ -2,6 +2,10 @@ package de.juplo.jpa.converters; import de.juplo.jpa.converters.TimeConversions.FixedZoneIdStrategy; import de.juplo.jpa.converters.TimeConversions.FixedZoneOffsetStrategy; +import de.juplo.yourshouter.api.model.Date; +import de.juplo.yourshouter.api.persistence.jpa.PrimaryKey; +import java.net.URI; +import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZoneOffset; @@ -28,6 +32,7 @@ public class JPAConverterTest ZonedDateTime zdt = ZonedDateTime.now(); OffsetDateTime odt = OffsetDateTime.now(); + LocalDate ld = LocalDate.now(); ZoneId defaultZone = ZoneId.systemDefault(); ZoneId otherZone = defaultZone.getId().equals("America/New_York") ? ZoneId.of("Europe/Berlin") : ZoneId.of("America/New_York"); @@ -53,20 +58,19 @@ public class JPAConverterTest public void testOffsetDateTime() { EierlegendeWollmilchSau ews; - Long id; TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(defaultOffset)); ews = new EierlegendeWollmilchSau(); ews.odt = odt; - id = persist(ews); - ews = retrieve(id); + persist(ews); + ews = retrieve(EierlegendeWollmilchSau.class, ews.id); assertEquals(odt, ews.odt); TimeConversions.setZoneOffsetStrategy(new FixedZoneOffsetStrategy(otherOffset)); ews = new EierlegendeWollmilchSau(); ews.odt = odt; - id = persist(ews); - ews = retrieve(id); + persist(ews); + ews = retrieve(EierlegendeWollmilchSau.class, ews.id); assertEquals(odt.toInstant(), ews.odt.toInstant()); } @@ -88,43 +92,66 @@ public class JPAConverterTest public void testZonedDateTime() { EierlegendeWollmilchSau ews; - Long id; TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(defaultZone)); ews = new EierlegendeWollmilchSau(); ews.zdt = zdt; - id = persist(ews); - ews = retrieve(id); + persist(ews); + ews = retrieve(EierlegendeWollmilchSau.class, ews.id); assertEquals(zdt, ews.zdt); TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(otherZone)); ews = new EierlegendeWollmilchSau(); ews.zdt = zdt; - id = persist(ews); - ews = retrieve(id); + persist(ews); + ews = retrieve(EierlegendeWollmilchSau.class, ews.id); assertEquals(zdt.toInstant(), ews.zdt.toInstant()); } - private Long persist(EierlegendeWollmilchSau ews) + @Test + public void testDataModel() + { + em = Persistence.createEntityManagerFactory("data-model").createEntityManager(); + Date date; + + TimeConversions.setZoneIdStrategy(new FixedZoneIdStrategy(defaultZone)); + date = new Date(); + date.setSource(URI.create("http://foo.bar")); + date.setId("TEST"); + date.setDate(ld); + date.setStart(zdt); + date.setEnd(zdt); + persist(date); + date = retrieve(Date.class, new PrimaryKey(date)); + assertEquals(ld, date.getDate()); + assertEquals(zdt, date.getStart()); + assertEquals(zdt, date.getEnd()); + } + + + private void persist(Object entity) { EntityTransaction tx = em.getTransaction(); tx.begin(); - em.persist(ews); - log.info("persisting {}", ews); + em.persist(entity); + log.info("persisting {}", entity); tx.commit(); em.clear(); - return ews.id; } - private EierlegendeWollmilchSau retrieve(Long id) + private T retrieve(Class entityClass, Object id) { - EierlegendeWollmilchSau ews; EntityTransaction tx = em.getTransaction(); tx.begin(); - ews = em.find(EierlegendeWollmilchSau.class, id); - tx.rollback(); - log.info("retrieved {}", ews); - return ews; + try + { + log.info("retrieving {} of class {}", id, entityClass); + return em.find(entityClass, id); + } + finally + { + tx.rollback(); + } } }