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;