diff --git a/Habitica/AndroidManifestTesting.xml b/Habitica/AndroidManifestTesting.xml new file mode 100644 index 000000000..38f1dbc99 --- /dev/null +++ b/Habitica/AndroidManifestTesting.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 126fc3e38..2396ddc35 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -183,7 +183,7 @@ android { assets.srcDirs = ['assets'] } robolectric { - manifest.srcFile 'AndroidManifest.xml' + manifest.srcFile 'AndroidManifestTesting.xml' java.srcDir file('src/test/java/') res.srcDirs = ['res'] } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java index 80871a2f9..d04f76f60 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java @@ -130,7 +130,11 @@ public class HabiticaApplication extends MultiDexApplication { setupCrashlytics(); createBillingAndCheckout(); registerActivityLifecycleCallbacks(); - Amplitude.getInstance().initialize(this, getString(R.string.amplitude_app_id)).enableForegroundTracking(this); + + if (!BuildConfig.DEBUG) { + Amplitude.getInstance().initialize(this, getString(R.string.amplitude_app_id)).enableForegroundTracking(this); + } + Fresco.initialize(this); checkIfNewVersion(); } @@ -178,7 +182,9 @@ public class HabiticaApplication extends MultiDexApplication { } private void setupFacebookSdk() { - FacebookSdk.sdkInitialize(getApplicationContext()); + if (!BuildConfig.DEBUG) { + FacebookSdk.sdkInitialize(getApplicationContext()); + } } private void setupCrashlytics() { diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java index 8434e1df0..1fa61fb47 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java @@ -603,7 +603,7 @@ public class Task extends BaseModel { Calendar newTime = new GregorianCalendar(); newTime.setTime(oldTime); - if (this.getFrequency().equals(FREQUENCY_DAILY) && (newTime.before(today) || newTime.equals(today))) { + if (this.getFrequency().equals(FREQUENCY_DAILY) ) { Calendar startDate = new GregorianCalendar(); startDate.setTime(this.getStartDate()); @@ -611,7 +611,9 @@ public class Task extends BaseModel { long diffInMillies = today.getTimeInMillis() - startDate.getTimeInMillis(); long daySinceStart = timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS); long daysUntilNextReminder = this.getEveryX() - (daySinceStart % this.getEveryX()); - newTime.add(Calendar.DATE, (int) daysUntilNextReminder); + + today.add(Calendar.DATE, (int) daysUntilNextReminder); + newTime.setTime(today.getTime()); } else { int nextActiveDayOfTheWeek = newTime.get(Calendar.DAY_OF_WEEK); while (!this.getRepeat().getForDay(nextActiveDayOfTheWeek) || newTime.before(today) || newTime.equals(today)) { diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/TaskAlarmManagerTest.java b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/TaskAlarmManagerTest.java index 9b2c7be36..ec08f64a2 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/TaskAlarmManagerTest.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/TaskAlarmManagerTest.java @@ -21,12 +21,14 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -35,6 +37,7 @@ import static org.junit.Assert.assertNotNull; * Created by keithholliday on 7/16/16. */ +@Config(manifest = "AndroidManifestTesting.xml") @RunWith(value = RobolectricTestRunner.class) public class TaskAlarmManagerTest { private TaskAlarmManager taskAlarmManager; @@ -59,6 +62,8 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); Calendar cal = Calendar.getInstance(); cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + 1); @@ -71,14 +76,13 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); - + int intentId = remindersItem1.getId().hashCode() & 0xfffffff; Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); - PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); + intent.setAction(remindersItem1.getId()); + PendingIntent sender = PendingIntent.getBroadcast(context, intentId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null; - Assert.assertNotNull(alarmId); + Assert.assertNotNull(intentId); Assert.assertEquals(true, alarmUp); } @@ -89,6 +93,8 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); Calendar cal = Calendar.getInstance(); cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + 1); @@ -101,9 +107,9 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); + int alarmId = remindersItem1.getId().hashCode() & 0xfffffff; Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); + intent.setAction(remindersItem1.getId()); PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null; @@ -127,7 +133,7 @@ public class TaskAlarmManagerTest { } taskAlarmManager.setAlarmsForTask(task); - Integer newAlarmId = reminders.get(0).getAlarmId(); + int newAlarmId = reminders.get(0).getId().hashCode() & 0xfffffff; PendingIntent senderNew = PendingIntent.getBroadcast(context, newAlarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUpNew = senderNew != null; @@ -192,6 +198,8 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); //We try to set a reminder on Tuesday, but the manager will correct this to Monday Calendar cal = Calendar.getInstance(); @@ -206,13 +214,13 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); + int alarmId = reminders.get(0).getId().hashCode() & 0xfffffff; Calendar newReminderTime = Calendar.getInstance(); newReminderTime.setTime(reminders.get(0).getTime()); Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); + intent.setAction(remindersItem1.getId()); PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null; @@ -240,6 +248,8 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); //We try to set a reminder for now, but by the manager will correct (because the seconds will be different) Calendar cal = Calendar.getInstance(); @@ -252,13 +262,13 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); + int alarmId = reminders.get(0).getId().hashCode() & 0xfffffff; Calendar newReminderTime = Calendar.getInstance(); newReminderTime.setTime(reminders.get(0).getTime()); Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); + intent.setAction(remindersItem1.getId()); PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null; @@ -278,13 +288,18 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); //We try to set a reminder one day after the start date, but the manager will correct since the // daily is every 2 days from above Calendar cal = Calendar.getInstance(); int currentDayOfTheWeek = cal.get(Calendar.DAY_OF_WEEK); + + task.setStartDate(cal.getTime()); + cal.set(Calendar.DAY_OF_WEEK, currentDayOfTheWeek + 1); - cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + 1); + cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)); remindersItem1.setTime(cal.getTime()); reminders.add(remindersItem1); @@ -294,13 +309,13 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); + int alarmId = reminders.get(0).getId().hashCode() & 0xfffffff; Calendar newReminderTime = Calendar.getInstance(); newReminderTime.setTime(reminders.get(0).getTime()); Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); + intent.setAction(remindersItem1.getId()); PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null; @@ -321,6 +336,8 @@ public class TaskAlarmManagerTest { List reminders = new ArrayList(); RemindersItem remindersItem1 = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + remindersItem1.setId(randomUUID.toString()); //We try to set a reminder for now, but the manager will correct since the seconds will be off Calendar cal = Calendar.getInstance(); @@ -334,13 +351,13 @@ public class TaskAlarmManagerTest { taskAlarmManager.setAlarmsForTask(task); - Integer alarmId = reminders.get(0).getAlarmId(); + int alarmId = reminders.get(0).getId().hashCode() & 0xfffffff; Calendar newReminderTime = Calendar.getInstance(); newReminderTime.setTime(reminders.get(0).getTime()); Intent intent = new Intent(context, TaskReceiver.class); - intent.setAction(remindersItem1.getAlarmId().toString()); + intent.setAction(remindersItem1.getId()); PendingIntent sender = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_NO_CREATE); boolean alarmUp = sender != null;