|
|
@ -1,5 +1,7 @@
|
|
|
|
package org.tasks.ui.editviewmodel
|
|
|
|
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.HiltAndroidTest
|
|
|
|
import dagger.hilt.android.testing.UninstallModules
|
|
|
|
import dagger.hilt.android.testing.UninstallModules
|
|
|
|
import kotlinx.coroutines.runBlocking
|
|
|
|
import kotlinx.coroutines.runBlocking
|
|
|
@ -7,12 +9,18 @@ import org.junit.Assert.assertEquals
|
|
|
|
import org.junit.Assert.assertFalse
|
|
|
|
import org.junit.Assert.assertFalse
|
|
|
|
import org.junit.Assert.assertTrue
|
|
|
|
import org.junit.Assert.assertTrue
|
|
|
|
import org.junit.Test
|
|
|
|
import org.junit.Test
|
|
|
|
|
|
|
|
import org.tasks.R
|
|
|
|
import org.tasks.data.createDueDate
|
|
|
|
import org.tasks.data.createDueDate
|
|
|
|
import org.tasks.data.entity.Alarm
|
|
|
|
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.whenOverdue
|
|
|
|
|
|
|
|
import org.tasks.data.entity.Alarm.Companion.whenStarted
|
|
|
|
import org.tasks.data.entity.Task
|
|
|
|
import org.tasks.data.entity.Task
|
|
|
|
import org.tasks.injection.ProductionModule
|
|
|
|
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.makers.TaskMaker.newTask
|
|
|
|
|
|
|
|
import org.tasks.time.DateTime
|
|
|
|
import org.tasks.time.DateTimeUtils2.currentTimeMillis
|
|
|
|
import org.tasks.time.DateTimeUtils2.currentTimeMillis
|
|
|
|
|
|
|
|
|
|
|
|
@UninstallModules(ProductionModule::class)
|
|
|
|
@UninstallModules(ProductionModule::class)
|
|
|
@ -20,78 +28,52 @@ import org.tasks.time.DateTimeUtils2.currentTimeMillis
|
|
|
|
class ReminderTests : BaseTaskEditViewModelTest() {
|
|
|
|
class ReminderTests : BaseTaskEditViewModelTest() {
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun whenStartReminder() = runBlocking {
|
|
|
|
fun whenStartReminder() = runBlocking {
|
|
|
|
val task = newTask()
|
|
|
|
preferences.setStringSet(
|
|
|
|
task.defaultReminders(Task.NOTIFY_AT_START)
|
|
|
|
R.string.p_default_reminders_key,
|
|
|
|
setup(task)
|
|
|
|
hashSetOf(Task.NOTIFY_AT_START.toString())
|
|
|
|
|
|
|
|
|
|
|
|
viewModel.setStartDate(
|
|
|
|
|
|
|
|
createDueDate(
|
|
|
|
|
|
|
|
Task.URGENCY_SPECIFIC_DAY_TIME,
|
|
|
|
|
|
|
|
currentTimeMillis()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
val task = newTask(with(START_DATE, DateTime()))
|
|
|
|
|
|
|
|
task.setDefaultReminders(preferences)
|
|
|
|
|
|
|
|
|
|
|
|
save()
|
|
|
|
setup(task)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(
|
|
|
|
assertEquals(
|
|
|
|
listOf(
|
|
|
|
listOf(Alarm(type = Alarm.TYPE_REL_START)),
|
|
|
|
Alarm(
|
|
|
|
viewModel.selectedAlarms.value
|
|
|
|
id = 1,
|
|
|
|
|
|
|
|
task = 1,
|
|
|
|
|
|
|
|
time = 0,
|
|
|
|
|
|
|
|
type = Alarm.TYPE_REL_START
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
alarmDao.getAlarms(task.id)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun whenDueReminder() = runBlocking {
|
|
|
|
fun whenDueReminder() = runBlocking {
|
|
|
|
val task = newTask()
|
|
|
|
preferences.setStringSet(
|
|
|
|
task.defaultReminders(Task.NOTIFY_AT_DEADLINE)
|
|
|
|
R.string.p_default_reminders_key,
|
|
|
|
setup(task)
|
|
|
|
hashSetOf(Task.NOTIFY_AT_DEADLINE.toString())
|
|
|
|
|
|
|
|
|
|
|
|
viewModel.setDueDate(
|
|
|
|
|
|
|
|
createDueDate(
|
|
|
|
|
|
|
|
Task.URGENCY_SPECIFIC_DAY_TIME,
|
|
|
|
|
|
|
|
currentTimeMillis()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
val task = newTask(with(DUE_TIME, DateTime()))
|
|
|
|
|
|
|
|
task.setDefaultReminders(preferences)
|
|
|
|
|
|
|
|
|
|
|
|
save()
|
|
|
|
setup(task)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(
|
|
|
|
assertEquals(
|
|
|
|
listOf(
|
|
|
|
listOf(Alarm(type = Alarm.TYPE_REL_END)),
|
|
|
|
Alarm(
|
|
|
|
viewModel.selectedAlarms.value
|
|
|
|
id = 1,
|
|
|
|
|
|
|
|
task = 1,
|
|
|
|
|
|
|
|
time = 0,
|
|
|
|
|
|
|
|
type = Alarm.TYPE_REL_END
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
alarmDao.getAlarms(task.id)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun whenOverDueReminder() = runBlocking {
|
|
|
|
fun whenOverDueReminder() = runBlocking {
|
|
|
|
val task = newTask()
|
|
|
|
preferences.setStringSet(
|
|
|
|
task.defaultReminders(Task.NOTIFY_AFTER_DEADLINE)
|
|
|
|
R.string.p_default_reminders_key,
|
|
|
|
setup(task)
|
|
|
|
hashSetOf(Task.NOTIFY_AFTER_DEADLINE.toString())
|
|
|
|
|
|
|
|
|
|
|
|
viewModel.setDueDate(
|
|
|
|
|
|
|
|
createDueDate(
|
|
|
|
|
|
|
|
Task.URGENCY_SPECIFIC_DAY_TIME,
|
|
|
|
|
|
|
|
currentTimeMillis()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
val task = newTask(with(DUE_TIME, DateTime()))
|
|
|
|
|
|
|
|
task.setDefaultReminders(preferences)
|
|
|
|
|
|
|
|
|
|
|
|
save()
|
|
|
|
setup(task)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(
|
|
|
|
assertEquals(
|
|
|
|
listOf(whenOverdue(1).copy(id = 1)),
|
|
|
|
listOf(whenOverdue(0)),
|
|
|
|
alarmDao.getAlarms(task.id)
|
|
|
|
viewModel.selectedAlarms.value
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -146,4 +128,67 @@ class ReminderTests : BaseTaskEditViewModelTest() {
|
|
|
|
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeFive)
|
|
|
|
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeFive)
|
|
|
|
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
|
|
|
|
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|