mirror of https://github.com/tasks/tasks
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.
111 lines
3.3 KiB
Kotlin
111 lines
3.3 KiB
Kotlin
package org.tasks.data
|
|
|
|
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
import com.todoroo.astrid.api.GtasksFilter
|
|
import com.todoroo.astrid.dao.TaskDao
|
|
import dagger.hilt.android.testing.HiltAndroidTest
|
|
import dagger.hilt.android.testing.UninstallModules
|
|
import kotlinx.coroutines.runBlocking
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Before
|
|
import org.junit.Test
|
|
import org.tasks.R
|
|
import org.tasks.data.dao.CaldavDao
|
|
import org.tasks.data.dao.GoogleTaskDao
|
|
import org.tasks.data.entity.CaldavAccount
|
|
import org.tasks.injection.InjectingTestCase
|
|
import org.tasks.injection.ProductionModule
|
|
import org.tasks.makers.CaldavCalendarMaker.UUID
|
|
import org.tasks.makers.CaldavCalendarMaker.newCaldavCalendar
|
|
import org.tasks.makers.CaldavTaskMaker.CALENDAR
|
|
import org.tasks.makers.CaldavTaskMaker.TASK
|
|
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
|
|
import org.tasks.makers.TaskMaker
|
|
import org.tasks.makers.TaskMaker.ID
|
|
import org.tasks.makers.TaskMaker.ORDER
|
|
import org.tasks.makers.TaskMaker.PARENT
|
|
import org.tasks.preferences.Preferences
|
|
import javax.inject.Inject
|
|
|
|
@UninstallModules(ProductionModule::class)
|
|
@HiltAndroidTest
|
|
class ManualGoogleTaskQueryTest : InjectingTestCase() {
|
|
@Inject lateinit var caldavDao: CaldavDao
|
|
@Inject lateinit var googleTaskDao: GoogleTaskDao
|
|
@Inject lateinit var taskDao: TaskDao
|
|
@Inject lateinit var preferences: Preferences
|
|
private lateinit var filter: GtasksFilter
|
|
|
|
@Before
|
|
override fun setUp() {
|
|
super.setUp()
|
|
preferences.clear()
|
|
preferences.setBoolean(R.string.p_manual_sort, true)
|
|
val calendar = newCaldavCalendar(with(UUID, "1234"))
|
|
runBlocking {
|
|
caldavDao.insert(CaldavAccount())
|
|
caldavDao.insert(calendar)
|
|
}
|
|
filter = GtasksFilter(calendar)
|
|
}
|
|
|
|
@Test
|
|
fun setIndentOnSubtask() = runBlocking {
|
|
newTask(1, 0, 0)
|
|
newTask(2, 0, 1)
|
|
|
|
val subtask = query()[1]
|
|
|
|
assertEquals(1, subtask.indent)
|
|
}
|
|
|
|
@Test
|
|
fun setParentOnSubtask() = runBlocking {
|
|
newTask(2, 0, 0)
|
|
newTask(1, 0, 2)
|
|
|
|
val subtask = query()[1]
|
|
|
|
assertEquals(2, subtask.parent)
|
|
}
|
|
|
|
@Test
|
|
fun querySetsPrimarySort() = runBlocking {
|
|
newTask(1, 0, 0)
|
|
newTask(2, 1, 0)
|
|
newTask(3, 0, 2)
|
|
|
|
val subtasks = query()
|
|
|
|
assertEquals(0, subtasks[0].primarySort)
|
|
assertEquals(1, subtasks[1].primarySort)
|
|
assertEquals(1, subtasks[2].primarySort)
|
|
}
|
|
|
|
@Test
|
|
fun querySetsSecondarySortOnSubtasks() = runBlocking {
|
|
newTask(1, 0, 0)
|
|
newTask(2, 0, 1)
|
|
newTask(3, 1, 1)
|
|
|
|
val subtasks = query()
|
|
|
|
assertEquals(0, subtasks[0].secondarySort)
|
|
assertEquals(0, subtasks[1].secondarySort)
|
|
assertEquals(1, subtasks[2].secondarySort)
|
|
}
|
|
|
|
private suspend fun newTask(id: Long, order: Long, parent: Long = 0) {
|
|
taskDao.insert(TaskMaker.newTask(
|
|
with(ID, id),
|
|
with(TaskMaker.UUID, UUIDHelper.newUUID()),
|
|
with(ORDER, order),
|
|
with(PARENT, parent),
|
|
))
|
|
googleTaskDao.insert(newCaldavTask(with(CALENDAR, filter.list.uuid), with(TASK, id)))
|
|
}
|
|
|
|
private suspend fun query(): List<TaskContainer> = taskDao.fetchTasks {
|
|
TaskListQuery.getQuery(preferences, filter)
|
|
}
|
|
} |