package org.hibernate.examples.mapping.usertype;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.examples.AbstractJpaTest;
import org.hibernate.examples.model.DateTimeRange;
import org.joda.time.DateTime;
import org.junit.Test;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import static org.assertj.core.api.Assertions.assertThat;
/**
* org.hibernate.examples.mapping.usertype.UserTypeTest
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 12. 3. 오후 9:15
*/
@Slf4j
@Transactional
public class UserTypeTest extends AbstractJpaTest {
@PersistenceContext
EntityManager em;
@Test
public void jodaDateTimeUserTypeTest() {
JodaDateTimeEntity entity = new JodaDateTimeEntity();
entity.setStart(DateTime.now().withTimeAtStartOfDay());
entity.setEnd(entity.getStart().plusDays(1));
entity.setRange1(new DateTimeRange(entity.getStart(), entity.getEnd()));
entity.setRange2(new DateTimeRange(entity.getStart().plusDays(1), entity.getEnd().plusDays(1)));
em.persist(entity);
em.flush();
em.clear();
JodaDateTimeEntity loaded = em.find(JodaDateTimeEntity.class, entity.getId());
assertThat(loaded).isEqualTo(entity);
assertThat(loaded.getStart()).isEqualTo(entity.getStart());
assertThat(loaded.getEnd()).isEqualTo(entity.getEnd());
assertThat(loaded.getRange1()).isEqualTo(entity.getRange1());
assertThat(loaded.getRange2()).isEqualTo(entity.getRange2());
}
@Test
public void jodaDateTimeTZUserTypeTest() {
JodaDateTimeTZEntity entity = new JodaDateTimeTZEntity();
entity.setStartTZ(DateTime.now().withTimeAtStartOfDay());
entity.setEndTZ(entity.getStartTZ().plusDays(1));
em.persist(entity);
em.flush();
em.clear();
JodaDateTimeTZEntity loaded = em.find(JodaDateTimeTZEntity.class, entity.getId());
assertThat(loaded).isEqualTo(entity);
assertThat(loaded.getStartTZ()).isEqualTo(entity.getStartTZ());
assertThat(loaded.getEndTZ()).isEqualTo(entity.getEndTZ());
}
}