/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the License at the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>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.
*/
package org.apereo.portal.events.aggr;
import static org.junit.Assert.assertEquals;
import org.apereo.portal.events.aggr.dao.DateDimensionDao;
import org.apereo.portal.events.aggr.dao.TimeDimensionDao;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
/**
*/
@RunWith(MockitoJUnitRunner.class)
public class IntervalHelperImplTest {
@InjectMocks
private AggregationIntervalHelperImpl helperImpl = new AggregationIntervalHelperImpl();
@Mock private DateDimensionDao dateDimensionDao;
@Mock private TimeDimensionDao timeDimensionDao;
@Test
public void testGetIntervalInfo() {
final DateTime instant = new DateTime(1325881376117l, DateTimeZone.UTC);
assertEquals(2012, instant.getYear());
assertEquals(1, instant.getMonthOfYear());
assertEquals(6, instant.getDayOfMonth());
assertEquals(1, instant.getWeekOfWeekyear());
assertEquals(20, instant.getHourOfDay());
assertEquals(22, instant.getMinuteOfHour());
assertEquals(56, instant.getSecondOfMinute());
assertEquals(117, instant.getMillisOfSecond());
DateTime start, end;
// TEST YEAR
start = AggregationInterval.YEAR.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(1, start.getDayOfMonth());
assertEquals(52, start.getWeekOfWeekyear());
assertEquals(0, start.getHourOfDay());
assertEquals(0, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.YEAR.determineEnd(start);
assertEquals(2013, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(1, end.getDayOfMonth());
assertEquals(1, end.getWeekOfWeekyear());
assertEquals(0, end.getHourOfDay());
assertEquals(0, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST MONTH
start = AggregationInterval.MONTH.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(1, start.getDayOfMonth());
assertEquals(52, start.getWeekOfWeekyear());
assertEquals(0, start.getHourOfDay());
assertEquals(0, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.MONTH.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(2, end.getMonthOfYear());
assertEquals(1, end.getDayOfMonth());
assertEquals(5, end.getWeekOfWeekyear());
assertEquals(0, end.getHourOfDay());
assertEquals(0, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST WEEK
start = AggregationInterval.WEEK.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(2, start.getDayOfMonth());
assertEquals(1, start.getWeekOfWeekyear());
assertEquals(0, start.getHourOfDay());
assertEquals(0, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.WEEK.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(9, end.getDayOfMonth());
assertEquals(2, end.getWeekOfWeekyear());
assertEquals(0, end.getHourOfDay());
assertEquals(0, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST DAY
start = AggregationInterval.DAY.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(6, start.getDayOfMonth());
assertEquals(1, start.getWeekOfWeekyear());
assertEquals(0, start.getHourOfDay());
assertEquals(0, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.DAY.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(7, end.getDayOfMonth());
assertEquals(1, end.getWeekOfWeekyear());
assertEquals(0, end.getHourOfDay());
assertEquals(0, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST HOUR
start = AggregationInterval.HOUR.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(6, start.getDayOfMonth());
assertEquals(1, start.getWeekOfWeekyear());
assertEquals(20, start.getHourOfDay());
assertEquals(0, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.HOUR.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(6, end.getDayOfMonth());
assertEquals(1, end.getWeekOfWeekyear());
assertEquals(21, end.getHourOfDay());
assertEquals(0, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST FIVE_MINUTE
start = AggregationInterval.FIVE_MINUTE.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(6, start.getDayOfMonth());
assertEquals(1, start.getWeekOfWeekyear());
assertEquals(20, start.getHourOfDay());
assertEquals(20, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.FIVE_MINUTE.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(6, end.getDayOfMonth());
assertEquals(1, end.getWeekOfWeekyear());
assertEquals(20, end.getHourOfDay());
assertEquals(25, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
// TEST MINUTE
start = AggregationInterval.MINUTE.determineStart(instant);
assertEquals(2012, start.getYear());
assertEquals(1, start.getMonthOfYear());
assertEquals(6, start.getDayOfMonth());
assertEquals(1, start.getWeekOfWeekyear());
assertEquals(20, start.getHourOfDay());
assertEquals(22, start.getMinuteOfHour());
assertEquals(0, start.getSecondOfMinute());
assertEquals(0, start.getMillisOfSecond());
end = AggregationInterval.MINUTE.determineEnd(start);
assertEquals(2012, end.getYear());
assertEquals(1, end.getMonthOfYear());
assertEquals(6, end.getDayOfMonth());
assertEquals(1, end.getWeekOfWeekyear());
assertEquals(20, end.getHourOfDay());
assertEquals(23, end.getMinuteOfHour());
assertEquals(0, end.getSecondOfMinute());
assertEquals(0, end.getMillisOfSecond());
}
}