diff --git a/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt b/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt index 9843e1c0a..6e693be14 100644 --- a/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt +++ b/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt @@ -1,5 +1,7 @@ package org.tasks.ui.editviewmodel +import com.natpryce.makeiteasy.MakeItEasy.with +import com.todoroo.astrid.service.TaskCreator.Companion.setDefaultReminders import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.UninstallModules import kotlinx.coroutines.runBlocking @@ -7,12 +9,18 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test +import org.tasks.R import org.tasks.data.createDueDate import org.tasks.data.entity.Alarm +import org.tasks.data.entity.Alarm.Companion.whenDue import org.tasks.data.entity.Alarm.Companion.whenOverdue +import org.tasks.data.entity.Alarm.Companion.whenStarted import org.tasks.data.entity.Task import org.tasks.injection.ProductionModule +import org.tasks.makers.TaskMaker.DUE_TIME +import org.tasks.makers.TaskMaker.START_DATE import org.tasks.makers.TaskMaker.newTask +import org.tasks.time.DateTime import org.tasks.time.DateTimeUtils2.currentTimeMillis @UninstallModules(ProductionModule::class) @@ -20,78 +28,52 @@ import org.tasks.time.DateTimeUtils2.currentTimeMillis class ReminderTests : BaseTaskEditViewModelTest() { @Test fun whenStartReminder() = runBlocking { - val task = newTask() - task.defaultReminders(Task.NOTIFY_AT_START) - setup(task) - - viewModel.setStartDate( - createDueDate( - Task.URGENCY_SPECIFIC_DAY_TIME, - currentTimeMillis() - ) + preferences.setStringSet( + R.string.p_default_reminders_key, + hashSetOf(Task.NOTIFY_AT_START.toString()) ) + val task = newTask(with(START_DATE, DateTime())) + task.setDefaultReminders(preferences) - save() + setup(task) assertEquals( - listOf( - Alarm( - id = 1, - task = 1, - time = 0, - type = Alarm.TYPE_REL_START - ) - ), - alarmDao.getAlarms(task.id) + listOf(Alarm(type = Alarm.TYPE_REL_START)), + viewModel.selectedAlarms.value ) } @Test fun whenDueReminder() = runBlocking { - val task = newTask() - task.defaultReminders(Task.NOTIFY_AT_DEADLINE) - setup(task) - - viewModel.setDueDate( - createDueDate( - Task.URGENCY_SPECIFIC_DAY_TIME, - currentTimeMillis() - ) + preferences.setStringSet( + R.string.p_default_reminders_key, + hashSetOf(Task.NOTIFY_AT_DEADLINE.toString()) ) + val task = newTask(with(DUE_TIME, DateTime())) + task.setDefaultReminders(preferences) - save() + setup(task) assertEquals( - listOf( - Alarm( - id = 1, - task = 1, - time = 0, - type = Alarm.TYPE_REL_END - ) - ), - alarmDao.getAlarms(task.id) + listOf(Alarm(type = Alarm.TYPE_REL_END)), + viewModel.selectedAlarms.value ) } @Test fun whenOverDueReminder() = runBlocking { - val task = newTask() - task.defaultReminders(Task.NOTIFY_AFTER_DEADLINE) - setup(task) - - viewModel.setDueDate( - createDueDate( - Task.URGENCY_SPECIFIC_DAY_TIME, - currentTimeMillis() - ) + preferences.setStringSet( + R.string.p_default_reminders_key, + hashSetOf(Task.NOTIFY_AFTER_DEADLINE.toString()) ) + val task = newTask(with(DUE_TIME, DateTime())) + task.setDefaultReminders(preferences) - save() + setup(task) assertEquals( - listOf(whenOverdue(1).copy(id = 1)), - alarmDao.getAlarms(task.id) + listOf(whenOverdue(0)), + viewModel.selectedAlarms.value ) } @@ -146,4 +128,67 @@ class ReminderTests : BaseTaskEditViewModelTest() { assertFalse(taskDao.fetch(task.id)!!.isNotifyModeFive) assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop) } -} \ No newline at end of file + + @Test + fun noDefaultRemindersWithNoDates() = runBlocking { + val task = newTask() + task.setDefaultReminders(preferences) + + setup(task) + + save() + + assertTrue(alarmDao.getAlarms(task.id).isEmpty()) + } + + @Test + fun addDefaultRemindersWhenAddingDueDate() = runBlocking { + preferences.setStringSet( + R.string.p_default_reminders_key, + hashSetOf( + Task.NOTIFY_AT_DEADLINE.toString(), + Task.NOTIFY_AFTER_DEADLINE.toString(), + ) + ) + val task = newTask() + setup(task) + + viewModel.setDueDate( + createDueDate( + Task.URGENCY_SPECIFIC_DAY_TIME, + currentTimeMillis() + ) + ) + + save() + + assertEquals( + listOf(whenDue(1).copy(id = 1), whenOverdue(1).copy(id = 2)), + alarmDao.getAlarms(task.id) + ) + } + + @Test + fun addDefaultRemindersWhenAddingStartDate() = runBlocking { + preferences.setStringSet( + R.string.p_default_reminders_key, + hashSetOf(Task.NOTIFY_AT_START.toString()) + ) + val task = newTask() + setup(task) + + viewModel.setStartDate( + createDueDate( + Task.URGENCY_SPECIFIC_DAY_TIME, + currentTimeMillis() + ) + ) + + save() + + assertEquals( + listOf(whenStarted(1).copy(id = 1)), + alarmDao.getAlarms(task.id) + ) + } +}