diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/CalendarReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/CalendarReceiver.java index 8c3e01e0..5d2e15e9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/CalendarReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/CalendarReceiver.java @@ -85,18 +85,18 @@ public class CalendarReceiver extends BroadcastReceiver { public CalendarReceiver(GBDevice gbDevice) { LOG.info("Created calendar receiver."); mGBDevice = gbDevice; - syncCalendar(); + onReceive(GBApplication.getContext(), new Intent()); } @Override public void onReceive(Context context, Intent intent) { LOG.info("got calendar changed broadcast"); - syncCalendar(); + List eventList = (new CalendarEvents()).getCalendarEventList(GBApplication.getContext()); + syncCalendar(eventList); } - public void syncCalendar() { + public void syncCalendar(List eventList) { LOG.info("Syncing with calendar."); - List eventList = (new CalendarEvents()).getCalendarEventList(GBApplication.getContext()); Hashtable eventTable = new Hashtable<>(); try (DBHandler dbHandler = GBApplication.acquireDB()) { diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/CalendarEventTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/CalendarEventTest.java index 554a714f..bd8c6919 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/CalendarEventTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/CalendarEventTest.java @@ -2,22 +2,53 @@ package nodomain.freeyourgadget.gadgetbridge.test; import org.junit.Test; +import java.util.ArrayList; +import java.util.List; + +import nodomain.freeyourgadget.gadgetbridge.entities.CalendarSyncStateDao; +import nodomain.freeyourgadget.gadgetbridge.externalevents.CalendarReceiver; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.CalendarEvents; +import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; public class CalendarEventTest extends TestBase { private static final long BEGIN = 1; private static final long END = 2; private static final long ID_1 = 100; + private static final long ID_2 = 101; + private static final String CALNAME_1 = "cal1"; @Test public void testHashCode() { - CalendarEvents.CalendarEvent c1 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, "something", null, null, null, false); - CalendarEvents.CalendarEvent c2 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, "something", null, null, null, false); - CalendarEvents.CalendarEvent c3 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, "something", null, null, null, false); + CalendarEvents.CalendarEvent c1 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, "something", null, null, CALNAME_1, false); + CalendarEvents.CalendarEvent c2 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, null, "something", null, CALNAME_1, false); + CalendarEvents.CalendarEvent c3 = new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, null, null, "something", CALNAME_1, false); + assertEquals(c1.hashCode(), c1.hashCode()); assertNotEquals(c1.hashCode(), c2.hashCode()); assertNotEquals(c2.hashCode(), c3.hashCode()); } + + + @Test + public void testSync() { + List eventList = new ArrayList<>(); + eventList.add(new CalendarEvents.CalendarEvent(BEGIN, END, ID_1, null, "something", null, CALNAME_1, false)); + + GBDevice dummyGBDevice = createDummyGDevice("00:00:01:00:03"); + dummyGBDevice.setState(GBDevice.State.INITIALIZED); +// Device device = DBHelper.getDevice(dummyGBDevice, daoSession); + CalendarReceiver testCR = new CalendarReceiver(dummyGBDevice); + + testCR.syncCalendar(eventList); + + eventList.add(new CalendarEvents.CalendarEvent(BEGIN, END, ID_2, null, "something", null, CALNAME_1, false)); + testCR.syncCalendar(eventList); + + CalendarSyncStateDao calendarSyncStateDao = daoSession.getCalendarSyncStateDao(); + assertEquals(2, calendarSyncStateDao.count()); + } + }