From 97565ff77085c0028712d8f1144f2a44e21bb8e8 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 27 May 2020 13:22:06 -0500 Subject: [PATCH] Add offline subtask test --- .../astrid/adapter/OfflineSubtaskTest.kt | 83 +++++++++++++++++++ .../java/org/tasks/injection/TestComponent.kt | 2 + .../astrid/adapter/TaskAdapterProvider.java | 12 +-- 3 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 app/src/androidTest/java/com/todoroo/astrid/adapter/OfflineSubtaskTest.kt diff --git a/app/src/androidTest/java/com/todoroo/astrid/adapter/OfflineSubtaskTest.kt b/app/src/androidTest/java/com/todoroo/astrid/adapter/OfflineSubtaskTest.kt new file mode 100644 index 000000000..330e71a0f --- /dev/null +++ b/app/src/androidTest/java/com/todoroo/astrid/adapter/OfflineSubtaskTest.kt @@ -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() + private val filter = BuiltInFilterExposer.getMyTasksFilter(ApplicationProvider.getApplicationContext().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): 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) +} \ No newline at end of file diff --git a/app/src/androidTest/java/org/tasks/injection/TestComponent.kt b/app/src/androidTest/java/org/tasks/injection/TestComponent.kt index ea796fd7d..12d757106 100644 --- a/app/src/androidTest/java/org/tasks/injection/TestComponent.kt +++ b/app/src/androidTest/java/org/tasks/injection/TestComponent.kt @@ -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) } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java index 73ec6d7d0..fa9d8d885 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java @@ -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(); }