
org.opencms.widgets.serialdate.TestSerialDateValue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of opencms-test Show documentation
Show all versions of opencms-test Show documentation
OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.
The newest version!
/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.widgets.serialdate;
import org.opencms.acacia.shared.I_CmsSerialDateValue.EndType;
import org.opencms.acacia.shared.I_CmsSerialDateValue.Month;
import org.opencms.acacia.shared.I_CmsSerialDateValue.PatternType;
import org.opencms.acacia.shared.I_CmsSerialDateValue.WeekDay;
import org.opencms.acacia.shared.I_CmsSerialDateValue.WeekOfMonth;
import org.opencms.test.OpenCmsTestCase;
import org.opencms.util.CmsUUID;
import java.util.Date;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.Test;
/** Tests for the serial date wrapper, targeting on transformations from/to Strings. */
public class TestSerialDateValue extends OpenCmsTestCase {
/**
* Test for the "current till end" flag.
*/
@Test
public void testCurrentTillEnd() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"NONE\"}, \"currenttillend\":false}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
// check if the flag is read correctly
assertFalse(wrapper.isCurrentTillEnd());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"NONE\"}}";
wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
// check if the flag is read correctly
assertTrue(wrapper.isCurrentTillEnd());
// re-wrap
rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the daily pattern, whole day and defined on a daily base, as well as with exceptions and occurrences specified.
*/
@Test
public void testDailyEndTimesWithExceptions() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"wholeday\":true, \"pattern\":{\"type\":\"DAILY\", \"interval\":\"5\"}, \"exceptions\":[\"1491289200000\",\"1491462000000\"], \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(true, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.DAILY, wrapper.getPatternType());
assertEquals(false, wrapper.isEveryWorkingDay());
assertEquals(5, wrapper.getInterval());
// exceptions
SortedSet exceptions = new TreeSet<>();
exceptions.add(new Date(1491289200000L));
exceptions.add(new Date(1491462000000L));
assertEquals(exceptions, wrapper.getExceptions());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the daily pattern, not whole day and defintion on for workdays with a series end date specified.
*/
@Test
public void testDailyWorkingDayEndDate() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"DAILY\", \"everyworkingday\":true}, \"enddate\":\"1492207200000\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.DATE, wrapper.getEndType());
assertEquals(1492207200000L, wrapper.getSeriesEndDate().getTime());
// pattern
assertEquals(PatternType.DAILY, wrapper.getPatternType());
assertEquals(true, wrapper.isEveryWorkingDay());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the yearly pattern, specified by week of month and weekday.
*/
@Test
public void testDateOnlyInitialization() {
String patternDefinition = "1491202800000";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(null, wrapper.getEnd());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.SINGLE, wrapper.getEndType());
// pattern
assertEquals(PatternType.NONE, wrapper.getPatternType());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the individual pattern.
*/
@Test
public void testIndividual() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"INDIVIDUAL\", \"dates\":[\"1501489020000\",\"1501748220000\"]}}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// pattern
assertEquals(PatternType.INDIVIDUAL, wrapper.getPatternType());
SortedSet dates = new TreeSet<>();
dates.add(new Date(1501489020000L));
dates.add(new Date(1501748220000L));
assertEquals(dates, wrapper.getIndividualDates());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test with missing to date.
*/
@Test
public void testMissingToDate() {
String patternDefinition = "{\"from\":\"1491202800000\", \"pattern\":{\"type\":\"NONE\"}}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertNull(wrapper.getEnd());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.SINGLE, wrapper.getEndType());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the monthly pattern, specified by day of month.
*/
@Test
public void testMonthlyDay() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"MONTHLY\", \"interval\":\"2\", \"day\":\"15\"}, \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.MONTHLY, wrapper.getPatternType());
assertEquals(15, wrapper.getDayOfMonth());
assertEquals(null, wrapper.getWeekDay());
assertEquals(2, wrapper.getInterval());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the monthly pattern, specified by day of month.
*/
@Test
public void testMonthlyWeeks() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"MONTHLY\", \"interval\":\"5\", \"weekdays\":[\"WEDNESDAY\"], \"weeks\":[\"SECOND\",\"LAST\"]}, \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.MONTHLY, wrapper.getPatternType());
assertEquals(WeekDay.WEDNESDAY, wrapper.getWeekDay());
SortedSet weeks = new TreeSet<>();
weeks.add(WeekOfMonth.SECOND);
weeks.add(WeekOfMonth.LAST);
assertEquals(weeks, wrapper.getWeeksOfMonth());
assertEquals(5, wrapper.getInterval());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the single event.
*/
@Test
public void testNone() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"NONE\"}}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// pattern
assertEquals(PatternType.NONE, wrapper.getPatternType());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test if the parent pattern series id is read correctly.
*/
@Test
public void testParentSeriesId() {
String parentId = "6d642ad9-5c78-11e5-96ab-0242ac11002b";
String patternDefinitionWithParent = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"NONE\"}, \"parentseries\":\""
+ parentId
+ "\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinitionWithParent);
assertTrue(wrapper.isValid());
assertTrue(wrapper.isFromOtherSeries());
assertEquals(new CmsUUID(parentId), wrapper.getParentSeriesId());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
String patternDefinitionWithoutParent = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"NONE\"}}";
wrapper = new CmsSerialDateValue(patternDefinitionWithoutParent);
assertFalse(wrapper.isFromOtherSeries());
assertNull(wrapper.getParentSeriesId());
// re-wrap
rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the weekly pattern.
*/
@Test
public void testWeekly() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"WEEKLY\", \"interval\":\"5\", \"weekdays\":[\"TUESDAY\",\"THURSDAY\"]}, \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.WEEKLY, wrapper.getPatternType());
SortedSet weekdays = new TreeSet<>();
weekdays.add(WeekDay.TUESDAY);
weekdays.add(WeekDay.THURSDAY);
assertEquals(weekdays, wrapper.getWeekDays());
assertEquals(5, wrapper.getInterval());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the yearly pattern, specified by day of month.
*/
@Test
public void testYearlyDay() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"YEARLY\", \"day\":\"31\", \"month\":\"JULY\"}, \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.YEARLY, wrapper.getPatternType());
assertEquals(null, wrapper.getWeekDay());
assertEquals(null, wrapper.getWeekOfMonth());
assertEquals(31, wrapper.getDayOfMonth());
assertEquals(Month.JULY, wrapper.getMonth());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
/**
* Test for the yearly pattern, specified by week of month and weekday.
*/
@Test
public void testYearlyWeeks() {
String patternDefinition = "{\"from\":\"1491202800000\", \"to\":\"1491231600000\", \"pattern\":{\"type\":\"YEARLY\", \"weekdays\":[\"WEDNESDAY\"], \"weeks\":[\"SECOND\"], \"month\":\"JULY\"}, \"occurrences\":\"3\"}";
CmsSerialDateValue wrapper = new CmsSerialDateValue(patternDefinition);
// general
assertTrue(wrapper.isValid());
assertEquals(1491202800000L, wrapper.getStart().getTime());
assertEquals(1491231600000L, wrapper.getEnd().getTime());
assertEquals(false, wrapper.isWholeDay());
// end
assertEquals(EndType.TIMES, wrapper.getEndType());
assertEquals(3, wrapper.getOccurrences());
// pattern
assertEquals(PatternType.YEARLY, wrapper.getPatternType());
assertEquals(WeekDay.WEDNESDAY, wrapper.getWeekDay());
assertEquals(WeekOfMonth.SECOND, wrapper.getWeekOfMonth());
assertEquals(Month.JULY, wrapper.getMonth());
// re-wrap
CmsSerialDateValue rewrap = new CmsSerialDateValue(wrapper.toString());
assertEquals(wrapper, rewrap);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy