/*
* #%L
* Nazgul Project: nazgul-core-persistence-model
* %%
* Copyright (C) 2010 - 2017 jGuru Europe AB
* %%
* Licensed under the jGuru Europe AB license (the "License"), based
* on Apache License, Version 2.0; you may not use this file except
* in compliance with the License.
*
* You may obtain a copy of the License at
*
* http://www.jguru.se/licenses/jguruCorporateSourceLicense-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*
*/
package se.jguru.nazgul.core.persistence.model.converter;
import org.junit.Assert;
import org.junit.Test;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.TimeZone;
/**
* @author <a href="mailto:lj@jguru.se">Lennart Jörelid</a>, jGuru Europe AB
*/
public class Java8TimeConvertersTest {
// Shared state
private static final TimeZone SWEDISH_TIMEZONE = TimeZone.getTimeZone("Europe/Stockholm");
private static final ZoneId SWEDISH_ZONE = SWEDISH_TIMEZONE.toZoneId();
// Shared state
private LocalDate aLocalDate = LocalDate.of(2016, Month.FEBRUARY, 5);
private LocalTime aLocalTime = LocalTime.of(23, 26);
private LocalDateTime aLocalDateTime = LocalDateTime.of(
LocalDate.of(2016, Month.MARCH, 4),
LocalTime.of(18, 15));
private ZonedDateTime aZonedDateTime = ZonedDateTime.of(
LocalDateTime.of(LocalDate.of(2015, Month.FEBRUARY, 2), LocalTime.of(19, 43)), SWEDISH_ZONE);
@Test
public void validateConvertingNulls() {
// Assemble
final LocalTimeAttributeConverter timeConverter = new LocalTimeAttributeConverter();
final LocalDateTimeAttributeConverter dateTimeConverter = new LocalDateTimeAttributeConverter();
final LocalDateAttributeConverter dateConverter = new LocalDateAttributeConverter();
// Act & Assert
Assert.assertNull(timeConverter.convertToDatabaseColumn(null));
Assert.assertNull(dateConverter.convertToDatabaseColumn(null));
Assert.assertNull(dateTimeConverter.convertToDatabaseColumn(null));
Assert.assertNull(timeConverter.convertToEntityAttribute(null));
Assert.assertNull(dateConverter.convertToEntityAttribute(null));
Assert.assertNull(dateTimeConverter.convertToEntityAttribute(null));
}
@Test
public void validateConverting() {
// Assemble
final LocalTimeAttributeConverter timeConverter = new LocalTimeAttributeConverter();
final LocalDateTimeAttributeConverter dateTimeConverter = new LocalDateTimeAttributeConverter();
final LocalDateAttributeConverter dateConverter = new LocalDateAttributeConverter();
// Act
final Time time = timeConverter.convertToDatabaseColumn(aLocalTime);
final Timestamp timestamp = dateTimeConverter.convertToDatabaseColumn(aLocalDateTime);
final Date date = dateConverter.convertToDatabaseColumn(aLocalDate);
// Assert
Assert.assertNotNull(time);
Assert.assertNotNull(timestamp);
Assert.assertNotNull(date);
Assert.assertEquals(aLocalDate, dateConverter.convertToEntityAttribute(date));
Assert.assertEquals(aLocalDateTime, dateTimeConverter.convertToEntityAttribute(timestamp));
Assert.assertEquals(aLocalTime, timeConverter.convertToEntityAttribute(time));
}
}