From b92702dec8149f246b7c71363a766dbdcc8f2816 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 9 Jan 2014 13:51:10 -0600 Subject: [PATCH] Add GtaskApiUtilitiesTest --- .../astrid/gtasks/api/GtasksApiUtilities.java | 40 ++-------- .../gtasks/sync/GtasksSyncV2Provider.java | 4 +- .../gtasks/api/GtasksApiUtilitiesTest.java | 79 +++++++++++++++++++ 3 files changed, 87 insertions(+), 36 deletions(-) create mode 100644 astrid/src/test/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java index 2d02edf51..77c52af89 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java @@ -21,30 +21,13 @@ public class GtasksApiUtilities { return new DateTime(newDate(time), TimeZone.getDefault()); } -// public static String unixTimeToGtasksCompletionTime(long time) { -// if (time == 0) return null; -// return new DateTime(newDate(time), TimeZone.getDefault()).toStringRfc3339(); -// } - - - public static long gtasksCompletedTimeToUnixTime(DateTime gtasksCompletedTime, long defaultValue) { + public static long gtasksCompletedTimeToUnixTime(DateTime gtasksCompletedTime) { if (gtasksCompletedTime == null) { - return defaultValue; + return 0; } return gtasksCompletedTime.getValue(); } -// public static long gtasksCompletedTimeToUnixTime(String gtasksCompletedTime, long defaultValue) { -// if (gtasksCompletedTime == null) return defaultValue; -// try { -// long utcTime = DateTime.parseRfc3339(gtasksCompletedTime).value; -// Date date = newDate(utcTime); -// return date.getTime(); -// } catch (NumberFormatException e) { -// return defaultValue; -// } -// } - /** * Google deals only in dates for due times, so on the server side they normalize to utc time * and then truncate h:m:s to 0. This can lead to a loss of date information for @@ -55,7 +38,7 @@ public class GtasksApiUtilities { if (time < 0) { return null; } - Date date = newDate(time); + Date date = newDate(time / 1000 * 1000); date.setHours(0); date.setMinutes(0); date.setSeconds(0); @@ -63,15 +46,10 @@ public class GtasksApiUtilities { return new DateTime(date, TimeZone.getTimeZone("UTC")); } -// public static DateTime unixTimeToGtasksDueDate(long time) { -// if (time == 0) return null; -// return new DateTime(time, 0); -// } - //Adjust for google's rounding - public static long gtasksDueTimeToUnixTime(DateTime gtasksDueTime, long defaultValue) { + public static long gtasksDueTimeToUnixTime(DateTime gtasksDueTime) { if (gtasksDueTime == null) { - return defaultValue; + return 0; } try { long utcTime = gtasksDueTime.getValue(); //DateTime.parseRfc3339(gtasksDueTime).value; @@ -79,13 +57,7 @@ public class GtasksApiUtilities { Date returnDate = newDate(date.getTime() + date.getTimezoneOffset() * 60000); return returnDate.getTime(); } catch (NumberFormatException e) { - return defaultValue; + return 0; } } - -// public static long gtasksDueTimeToUnixTime(DateTime gtasksDueTime, long defaultValue) { -// if (gtasksDueTime == null) return defaultValue; -// return gtasksDueTime.getValue(); -// } - } diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java index 0df4d4541..c6573e148 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java @@ -306,7 +306,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider { task.setValue(Task.TITLE, remoteTask.getTitle()); task.setValue(Task.CREATION_DATE, DateUtilities.now()); - task.setValue(Task.COMPLETION_DATE, GtasksApiUtilities.gtasksCompletedTimeToUnixTime(remoteTask.getCompleted(), 0)); + task.setValue(Task.COMPLETION_DATE, GtasksApiUtilities.gtasksCompletedTimeToUnixTime(remoteTask.getCompleted())); if (remoteTask.getDeleted() == null || !remoteTask.getDeleted()) { task.setValue(Task.DELETION_DATE, 0L); } else if (remoteTask.getDeleted()) { @@ -316,7 +316,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider { task.setValue(Task.DELETION_DATE, DateUtilities.now()); } - long dueDate = GtasksApiUtilities.gtasksDueTimeToUnixTime(remoteTask.getDue(), 0); + long dueDate = GtasksApiUtilities.gtasksDueTimeToUnixTime(remoteTask.getDue()); long createdDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, dueDate); task.setValue(Task.DUE_DATE, createdDate); task.setValue(Task.NOTES, remoteTask.getNotes()); diff --git a/astrid/src/test/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java b/astrid/src/test/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java new file mode 100644 index 000000000..5df496734 --- /dev/null +++ b/astrid/src/test/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java @@ -0,0 +1,79 @@ +package com.todoroo.astrid.gtasks.api; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import java.util.TimeZone; + +import static com.todoroo.astrid.gtasks.api.GtasksApiUtilities.gtasksCompletedTimeToUnixTime; +import static com.todoroo.astrid.gtasks.api.GtasksApiUtilities.gtasksDueTimeToUnixTime; +import static com.todoroo.astrid.gtasks.api.GtasksApiUtilities.unixTimeToGtasksCompletionTime; +import static com.todoroo.astrid.gtasks.api.GtasksApiUtilities.unixTimeToGtasksDueDate; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +@RunWith(RobolectricTestRunner.class) +public class GtasksApiUtilitiesTest { + + private static final DateTimeZone defaultTimeZone = DateTimeZone.getDefault(); + + @Before + public void before() { + DateTimeZone.setDefault(DateTimeZone.forID("America/Chicago")); + } + + @After + public void after() { + DateTimeZone.setDefault(defaultTimeZone); + } + + @Test + public void convertUnixToGoogleCompletionTime() { + long now = new DateTime(2014, 1, 8, 8, 53, 20, 109).getMillis(); + assertEquals(now, unixTimeToGtasksCompletionTime(now).getValue()); + } + + @Test + public void convertGoogleCompletedTimeToUnixTime() { + long now = new DateTime(2014, 1, 8, 8, 53, 20, 109).getMillis(); + com.google.api.client.util.DateTime gtime = new com.google.api.client.util.DateTime(now); + assertEquals(now, gtasksCompletedTimeToUnixTime(gtime)); + } + + @Test + public void convertDueDateTimeToGoogleDueDate() { + DateTime now = new DateTime(2014, 1, 8, 8, 53, 20, 109); + + assertEquals( + new DateTime(2014, 1, 8, 0, 0, 0, 0, DateTimeZone.UTC).getMillis(), + unixTimeToGtasksDueDate(now.getMillis()).getValue()); + } + + @Test + public void convertGoogleDueDateToUnixTime() { + com.google.api.client.util.DateTime googleDueDate = + new com.google.api.client.util.DateTime( + new DateTime(2014, 1, 8, 0, 0, 0, 0).toDate(), TimeZone.getTimeZone("UTC")); + + assertEquals( + new DateTime(2014, 1, 8, 6, 0, 0, 0).getMillis(), + gtasksDueTimeToUnixTime(googleDueDate)); + } + + @Test + public void convertToInvalidGtaskTimes() { + assertNull(unixTimeToGtasksCompletionTime(-1)); + assertNull(unixTimeToGtasksDueDate(-1)); + } + + @Test + public void convertFromInvalidGtaskTimes() { + assertEquals(0, gtasksCompletedTimeToUnixTime(null)); + assertEquals(0, gtasksDueTimeToUnixTime(null)); + } +}