/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.test.module.extension.connector; import static org.junit.Assert.assertEquals; import org.mule.test.module.extension.AbstractExtensionFunctionalTestCase; import org.mule.test.petstore.extension.PetStoreClient; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Calendar; import java.util.Date; import java.util.List; import org.junit.Test; public class PetStoreISO8601DateParsingTestCase extends AbstractExtensionFunctionalTestCase { public static final int YEAR = 2008; public static final int MONTH = 9; public static final int DAY = 15; public static final int HOUR = 15; public static final int MINUTE = 53; public static final int SECOND = 23; @Override protected String getConfigFile() { return "petstore-iso8601-config.xml"; } @Override protected boolean isDisposeContextPerClass() { return true; } @Test public void testDateTimeWithTimeZone() throws Exception { Date date = getDate("getWithTimeZone"); ZonedDateTime openingDate = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("+05:00")); assertTimeZoneDate(openingDate); assertTimeZoneDateTime(openingDate); } @Test public void testDateTimeWithTimeZoneNoSeconds() throws Exception { Date date = getDate("getWithTimeZoneNoSeconds"); ZonedDateTime openingDate = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("+05:00")); assertTimeZoneDate(openingDate); assertTimeZoneWithoutSeconds(openingDate); } @Test public void testDateTimeWithTimeZoneNoMinutes() throws Exception { Date date = getDate("getWithTimeZoneNoMinutes"); ZonedDateTime openingDate = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("+05:00")); assertTimeZoneDate(openingDate); assertTimeZoneHour(openingDate); } @Test public void testDateTime() throws Exception { Date date = getDate("getWithDateTime"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); assertDate(calendar); assertTime(calendar); } @Test public void testDate() throws Exception { Date date = getDate("getWithDate"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); assertDate(calendar); } @Test public void testDateList() throws Exception { Calendar calendar = Calendar.getInstance(); PetStoreClient client = getClient("getDateList"); List<Date> dates = client.getClosedForHolidays(); calendar.setTime(dates.get(0)); assertEquals(dates.size(), 1); assertDate(calendar); } @Test public void testDateTimeList() throws Exception { PetStoreClient client = getClient("getDateTimeList"); List<LocalDateTime> dates = client.getDiscountDates(); assertEquals(dates.size(), 1); assertDateTime(dates.get(0)); } public Date getDate(String flowName) throws Exception { PetStoreClient client = getClient(flowName); return client.getOpeningDate(); // 2008-09-15T15:53:23+05:00 } public PetStoreClient getClient(String flowName) throws Exception { return ((PetStoreClient) flowRunner(flowName).run().getMessage().getPayload().getValue()); } private void assertDate(Calendar openingDate) { assertEquals(openingDate.get(Calendar.YEAR), YEAR); assertEquals(openingDate.get(Calendar.MONTH) + 1, MONTH); assertEquals(openingDate.get(Calendar.DAY_OF_MONTH), DAY); } private void assertDateTime(LocalDateTime localDateTime) { assertEquals(localDateTime.getYear(), YEAR); assertEquals(localDateTime.getMonthValue(), MONTH); assertEquals(localDateTime.getDayOfMonth(), DAY); assertEquals(localDateTime.getHour(), HOUR); assertEquals(localDateTime.getMinute(), MINUTE); assertEquals(localDateTime.getSecond(), SECOND); } private void assertTime(Calendar openingDate) { assertEquals(openingDate.get(Calendar.HOUR_OF_DAY), HOUR); assertEquals(openingDate.get(Calendar.MINUTE), MINUTE); assertEquals(openingDate.get(Calendar.SECOND), SECOND); } private void assertTimeZoneDate(ZonedDateTime openingDate) { assertEquals(openingDate.getYear(), YEAR); assertEquals(openingDate.getMonthValue(), MONTH); assertEquals(openingDate.getDayOfMonth(), DAY); } private void assertTimeZoneDateTime(ZonedDateTime openingDate) { assertEquals(openingDate.getHour(), HOUR); assertEquals(openingDate.getMinute(), MINUTE); assertEquals(openingDate.getSecond(), SECOND); } private void assertTimeZoneWithoutSeconds(ZonedDateTime openingDate) { assertEquals(openingDate.getHour(), HOUR); assertEquals(openingDate.getMinute(), MINUTE); } private void assertTimeZoneHour(ZonedDateTime openingDate) { assertEquals(openingDate.getHour(), 15); } }