Fix tests

pull/2906/head
Alex Baker 1 month ago
parent e11c0d2528
commit c4e25b8b15

@ -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)
)
}
}

Loading…
Cancel
Save