package codeine;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import org.joda.time.DateTime;
import org.joda.time.tz.FixedDateTimeZone;
import org.junit.Test;
import codeine.jsons.mails.AlertsCollectionType;
import codeine.mail.CollectionTypeGetter;
import com.google.common.collect.Lists;
public class CollectionTypeGetterTest {
private DateTime dateTime = new DateTime(0, FixedDateTimeZone.UTC);
private CollectionTypeGetter tested = new CollectionTypeGetter(FixedDateTimeZone.UTC);
@Test
public void testImmediatlyOn6Min() {
assertEquals(immediatly(), tested.getCollectionType(dateTime.plus(TimeUnit.MINUTES.toMillis(59))));
}
private ArrayList<AlertsCollectionType> immediatly() {
return Lists.newArrayList(AlertsCollectionType.Immediately);
}
@Test(expected=IllegalArgumentException.class)
public void testIllegal() {
assertEquals(immediatly(), tested.getCollectionType(dateTime));
}
@Test
public void testHourlyOn0to5MinutesOfTheHour() {
assertEquals(hourly(), tested.getCollectionType(dateTime.plus(TimeUnit.MINUTES.toMillis(61))));
}
private ArrayList<AlertsCollectionType> hourly() {
return Lists.newArrayList(AlertsCollectionType.Immediately, AlertsCollectionType.Hourly);
}
@Test
public void testNotCollectingHourlyTwice() {
assertEquals(hourly(), tested.getCollectionType(dateTime.plus(TimeUnit.MINUTES.toMillis(61))));
assertEquals(immediatly(), tested.getCollectionType(dateTime.plus(TimeUnit.MINUTES.toMillis(62))));
}
@Test
public void testDailyOn7to8InTheMorningOnce() {
int hour = 7;
assertEquals(daily(), tested.getCollectionType(dateTime.plus(TimeUnit.HOURS.toMillis(hour))));
assertEquals(immediatly(), tested.getCollectionType(dateTime.plus(TimeUnit.HOURS.toMillis(hour)+1)));
}
private ArrayList<AlertsCollectionType> daily() {
return Lists.newArrayList(AlertsCollectionType.Immediately, AlertsCollectionType.Hourly, AlertsCollectionType.Daily);
}
}