mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1272 - ENH: Add built in support for Joda Period and java time Period
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package io.ebeaninternal.server.type;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.Period;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class ScalarTypePeriodTest {
|
||||
|
||||
private ScalarTypePeriod scalarType = new ScalarTypePeriod();
|
||||
|
||||
@Test
|
||||
public void getLength() {
|
||||
assertThat(scalarType.getLength()).isEqualTo(20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatAndParse() {
|
||||
|
||||
Period original = Period.of(1,2, 4);
|
||||
|
||||
String value = scalarType.formatValue(original);
|
||||
assertThat(value).isEqualTo("P1Y2M4D");
|
||||
|
||||
Period period = scalarType.parse(value);
|
||||
assertThat(period).isEqualTo(original);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void convertFromDbString() {
|
||||
|
||||
Period original = Period.of(1, 2, 4);
|
||||
|
||||
String stringVal = scalarType.convertToDbString(original);
|
||||
Period period = scalarType.convertFromDbString(stringVal);
|
||||
|
||||
assertThat(period).isEqualTo(original);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.Period;
|
||||
import java.time.Year;
|
||||
import java.time.YearMonth;
|
||||
import java.time.ZoneId;
|
||||
@@ -54,6 +55,8 @@ public class SomeNewTypesBean {
|
||||
|
||||
Path path;
|
||||
|
||||
Period period;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -165,4 +168,12 @@ public class SomeNewTypesBean {
|
||||
public void setPath(Path path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public Period getPeriod() {
|
||||
return period;
|
||||
}
|
||||
|
||||
public void setPeriod(Period period) {
|
||||
this.period = period;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@ package org.tests.types;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.types.SomeNewTypesBean;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.types.SomeNewTypesBean;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Instant;
|
||||
@@ -14,20 +13,23 @@ import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.Period;
|
||||
import java.time.Year;
|
||||
import java.time.YearMonth;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class TestNewTypes extends BaseTestCase {
|
||||
|
||||
private static final String TEMP_PATH = new File("/tmp").getAbsolutePath();
|
||||
|
||||
@Test
|
||||
public void testInsertUpdate() throws IOException, InterruptedException {
|
||||
public void testInsertUpdate() throws InterruptedException {
|
||||
SomeNewTypesBean bean = new SomeNewTypesBean();
|
||||
bean.setLocalDate(LocalDate.now());
|
||||
bean.setLocalDateTime(LocalDateTime.now());
|
||||
@@ -41,6 +43,7 @@ public class TestNewTypes extends BaseTestCase {
|
||||
bean.setZoneOffset(ZonedDateTime.now().getOffset());
|
||||
bean.setYearMonth(YearMonth.of(2014, 9));
|
||||
bean.setPath(Paths.get(TEMP_PATH));
|
||||
bean.setPeriod(Period.of(4,3,2));
|
||||
|
||||
|
||||
Ebean.save(bean);
|
||||
@@ -83,6 +86,9 @@ public class TestNewTypes extends BaseTestCase {
|
||||
list = Ebean.find(SomeNewTypesBean.class).where().eq("path", Paths.get(TEMP_PATH)).findList();
|
||||
assertTrue(!list.isEmpty());
|
||||
|
||||
list = Ebean.find(SomeNewTypesBean.class).where().eq("period", Period.of(4,3,2)).findList();
|
||||
assertTrue(!list.isEmpty());
|
||||
|
||||
SomeNewTypesBean fetched = Ebean.find(SomeNewTypesBean.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getZoneId(), fetched.getZoneId());
|
||||
@@ -95,6 +101,8 @@ public class TestNewTypes extends BaseTestCase {
|
||||
assertEquals(bean.getOffsetDateTime(), fetched.getOffsetDateTime());
|
||||
assertEquals(bean.getInstant(), fetched.getInstant());
|
||||
assertEquals(bean.getPath(), fetched.getPath());
|
||||
assertEquals(bean.getPeriod(), fetched.getPeriod());
|
||||
|
||||
|
||||
String asJson = Ebean.json().toJson(fetched);
|
||||
|
||||
@@ -111,6 +119,7 @@ public class TestNewTypes extends BaseTestCase {
|
||||
assertEquals(bean.getInstant(), toBean.getInstant());
|
||||
// FIXME: This test fails on Windows with: expected:<\tmp> but was:<C:\tmp>
|
||||
assertEquals(bean.getPath(), toBean.getPath());
|
||||
assertEquals(bean.getPeriod(), toBean.getPeriod());
|
||||
|
||||
}
|
||||
|
||||
@@ -133,6 +142,6 @@ public class TestNewTypes extends BaseTestCase {
|
||||
assertNull(fetched.getOffsetDateTime());
|
||||
assertNull(fetched.getInstant());
|
||||
assertNull(fetched.getPath());
|
||||
|
||||
assertNull(fetched.getPeriod());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user