Add offline subtask test

pull/996/head
Alex Baker 6 years ago
parent 718f0fbe9a
commit 97565ff770

@ -0,0 +1,83 @@
package com.todoroo.astrid.adapter
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.core.BuiltInFilterExposer
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
class OfflineSubtaskTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences
private lateinit var adapter: TaskAdapter
private val tasks = ArrayList<TaskContainer>()
private val filter = BuiltInFilterExposer.getMyTasksFilter(ApplicationProvider.getApplicationContext<Context>().resources)
private val dataSource = object : TaskAdapterDataSource {
override fun getItem(position: Int) = tasks[position]
override fun getTaskCount() = tasks.size
}
@Before
override fun setUp() {
super.setUp()
tasks.clear()
adapter = TaskAdapter()
adapter.setDataSource(dataSource)
}
@Test
fun singleLevelSubtask() {
val parent = addTask()
val child = addTask(with(PARENT, parent))
query()
assertEquals(child, tasks[1].id)
assertEquals(parent, tasks[1].parent)
assertEquals(1, tasks[1].indent)
}
@Test
fun multiLevelSubtasks() {
val grandparent = addTask()
val parent = addTask(with(PARENT, grandparent))
val child = addTask(with(PARENT, parent))
query()
assertEquals(child, tasks[2].id)
assertEquals(parent, tasks[2].parent)
assertEquals(2, tasks[2].indent)
}
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
val task = newTask(*properties)
taskDao.createNew(task)
return task.id
}
private fun query() {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -3,6 +3,7 @@ package org.tasks.injection
import com.todoroo.astrid.adapter.CaldavManualSortTaskAdapterTest
import com.todoroo.astrid.adapter.CaldavTaskAdapterTest
import com.todoroo.astrid.adapter.GoogleTaskManualSortAdapterTest
import com.todoroo.astrid.adapter.OfflineSubtaskTest
import com.todoroo.astrid.alarms.AlarmJobServiceTest
import com.todoroo.astrid.dao.TaskDaoTests
import com.todoroo.astrid.gtasks.GtasksListServiceTest
@ -48,4 +49,5 @@ interface TestComponent : ApplicationComponent {
fun inject(tests: CaldavDaoShiftTests)
fun inject(tests: CaldavManualSortTaskAdapterTest)
fun inject(tests: GoogleTaskManualSortAdapterTest)
fun inject(tests: OfflineSubtaskTest)
}

@ -63,10 +63,8 @@ public class TaskAdapterProvider {
if (filter instanceof TagFilter) {
TagFilter tagFilter = (TagFilter) filter;
TagData tagData = tagDataDao.getByUuid(tagFilter.getUuid());
if (tagData != null) {
return preferences.isManualSort()
? createManualTagTaskAdapter(tagFilter)
: new TaskAdapter();
if (tagData != null && preferences.isManualSort()) {
return createManualTagTaskAdapter(tagFilter);
}
} else if (filter instanceof GtasksFilter) {
GtasksFilter gtasksFilter = (GtasksFilter) filter;
@ -84,10 +82,8 @@ public class TaskAdapterProvider {
? new CaldavManualSortTaskAdapter(taskDao, caldavDao)
: new CaldavTaskAdapter(taskDao, caldavDao, preferences.addTasksToTop());
}
} else {
return subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)
? createManualFilterTaskAdapter(filter)
: new TaskAdapter();
} else if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
return createManualFilterTaskAdapter(filter);
}
return new TaskAdapter();
}

Loading…
Cancel
Save