package com.plusonelabs.calendar;
import android.test.InstrumentationTestCase;
import com.plusonelabs.calendar.calendar.CalendarEvent;
import com.plusonelabs.calendar.calendar.MockCalendarContentProvider;
import com.plusonelabs.calendar.widget.CalendarEntry;
import com.plusonelabs.calendar.widget.WidgetEntry;
import org.joda.time.DateTime;
/**
* @author yvolk@yurivolkov.com
*/
public class OngoingEventTest extends InstrumentationTestCase {
private static final String TAG = OngoingEventTest.class.getSimpleName();
private MockCalendarContentProvider provider = null;
private EventRemoteViewsFactory factory = null;
private int eventId = 0;
@Override
protected void setUp() throws Exception {
super.setUp();
provider = MockCalendarContentProvider.getContentProvider(this);
factory = new EventRemoteViewsFactory(provider.getContext(), provider.getWidgetId());
assertTrue(factory.getWidgetEntries().isEmpty());
}
@Override
protected void tearDown() throws Exception {
provider.tearDown();
super.tearDown();
}
/**
* @see <a href="https://github.com/plusonelabs/calendar-widget/issues/199">Issue 199</a>
*/
public void testTodaysOngoingEvent() {
DateTime today = DateUtil.now(provider.getSettings().getTimeZone()).withTimeAtStartOfDay();
CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(),
provider.getSettings().getTimeZone(), false);
event.setEventId(++eventId);
event.setTitle("Ongoing event shows original start time");
event.setStartDate(today.plusHours(9));
event.setEndDate(today.plusHours(12));
DateUtil.setNow(today.plusHours(10).plusMinutes(33));
provider.addRow(event);
factory.onDataSetChanged();
factory.logWidgetEntries(TAG);
CalendarEntry entry = null;
for (WidgetEntry item : factory.getWidgetEntries()) {
if (item instanceof CalendarEntry) {
entry = (CalendarEntry) item;
}
}
assertNotNull(entry);
assertTrue("Is active event", entry.getEvent().isActive());
assertFalse("Is not part of Multi Day Event", entry.isPartOfMultiDayEvent());
assertEquals("Start Time didn't change for today's event", event.getStartDate(), entry.getStartDate());
assertEquals("End Time didn't change for today's event", event.getEndDate(), entry.getEndDate());
}
/**
* @see <a href="https://github.com/plusonelabs/calendar-widget/issues/199">Issue 199</a>
*/
public void testYesterdaysOngoingEvent() {
DateTime today = DateUtil.now(provider.getSettings().getTimeZone()).withTimeAtStartOfDay();
CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(),
provider.getSettings().getTimeZone(), false);
event.setEventId(++eventId);
event.setTitle("Ongoing event, which started yesterday, shows no start time");
event.setStartDate(today.minusDays(1).plusHours(9));
event.setEndDate(today.plusHours(12));
DateUtil.setNow(today.plusHours(10).plusMinutes(33));
provider.addRow(event);
factory.onDataSetChanged();
factory.logWidgetEntries(TAG);
CalendarEntry entry = null;
for (WidgetEntry item : factory.getWidgetEntries()) {
if (item instanceof CalendarEntry) {
entry = (CalendarEntry) item;
}
}
assertNotNull(entry);
assertTrue("Is active event", entry.getEvent().isActive());
assertTrue("Is Part of Multi Day Event", entry.isPartOfMultiDayEvent());
assertFalse("Is not start of Multi Day Event", entry.isStartOfMultiDayEvent());
assertTrue("Is end of Multi Day Event", entry.isEndOfMultiDayEvent());
assertEquals("Yesterday's event entry start time is midnight", today, entry.getStartDate());
assertEquals("End Time didn't change for yesterday's event", event.getEndDate(), entry.getEndDate());
}
public void testEventWhichCarryOverToTheNextDay() {
DateTime today = DateUtil.now(provider.getSettings().getTimeZone()).withTimeAtStartOfDay();
CalendarEvent event = new CalendarEvent(provider.getContext(), provider.getWidgetId(),
provider.getSettings().getTimeZone(), false);
event.setEventId(++eventId);
event.setTitle("Event that carry over to the next day, show as ending midnight");
event.setStartDate(today.plusHours(19));
event.setEndDate(today.plusDays(1).plusHours(7));
DateUtil.setNow(today.plusHours(20).plusMinutes(33));
provider.addRow(event);
factory.onDataSetChanged();
factory.logWidgetEntries(TAG);
CalendarEntry entry = null;
for (WidgetEntry item : factory.getWidgetEntries()) {
if (item instanceof CalendarEntry) {
entry = (CalendarEntry) item;
break;
}
}
assertNotNull(entry);
assertTrue("Is active event", entry.getEvent().isActive());
assertTrue("Is Part of Multi Day Event", entry.isPartOfMultiDayEvent());
assertTrue("Is start of Multi Day Event", entry.isStartOfMultiDayEvent());
assertFalse("Is not an end of Multi Day Event", entry.isEndOfMultiDayEvent());
assertEquals("Start Time didn't change for today's event", event.getStartDate(), entry.getStartDate());
assertEquals("Event entry end time is next midnight", today.plusDays(1), entry.getEndDate());
}
}