You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tasks/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt

117 lines
2.9 KiB
Kotlin

package org.tasks.ui.editviewmodel
import com.todoroo.astrid.data.Task
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import kotlinx.coroutines.runBlocking
import org.junit.Assert.*
import org.junit.Test
import org.tasks.data.Alarm
import org.tasks.data.Alarm.Companion.whenOverdue
import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils.currentTimeMillis
@UninstallModules(ProductionModule::class)
@HiltAndroidTest
class ReminderTests : BaseTaskEditViewModelTest() {
@Test
fun whenStartReminder() = runBlocking {
val task = newTask()
task.defaultReminders(Task.NOTIFY_AT_START)
setup(task)
viewModel.hideUntil = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, currentTimeMillis())
save()
assertEquals(
listOf(Alarm(1, 0, Alarm.TYPE_REL_START).apply { id = 1 }),
alarmDao.getAlarms(task.id)
)
}
@Test
fun whenDueReminder() = runBlocking {
val task = newTask()
task.defaultReminders(Task.NOTIFY_AT_DEADLINE)
setup(task)
viewModel.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, currentTimeMillis())
save()
assertEquals(
listOf(Alarm(1, 0, Alarm.TYPE_REL_END).apply { id = 1 }),
alarmDao.getAlarms(task.id)
)
}
@Test
fun whenOverDueReminder() = runBlocking {
val task = newTask()
task.defaultReminders(Task.NOTIFY_AFTER_DEADLINE)
setup(task)
viewModel.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, currentTimeMillis())
save()
assertEquals(
listOf(whenOverdue(1).apply { id = 1 }),
alarmDao.getAlarms(task.id)
)
}
@Test
fun ringFiveTimes() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringFiveTimes = true
save()
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeFive)
}
@Test
fun ringNonstop() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringNonstop = true
save()
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
}
@Test
fun ringFiveTimesCantRingNonstop() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringNonstop = true
viewModel.ringFiveTimes = true
save()
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeFive)
}
@Test
fun ringNonStopCantRingFiveTimes() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringFiveTimes = true
viewModel.ringNonstop = true
save()
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeFive)
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
}
}