diff --git a/app/src/androidTest/java/org/tasks/ui/editviewmodel/BaseTaskEditViewModelTest.kt b/app/src/androidTest/java/org/tasks/ui/editviewmodel/BaseTaskEditViewModelTest.kt index aed0756a3..ddf5a9343 100644 --- a/app/src/androidTest/java/org/tasks/ui/editviewmodel/BaseTaskEditViewModelTest.kt +++ b/app/src/androidTest/java/org/tasks/ui/editviewmodel/BaseTaskEditViewModelTest.kt @@ -1,5 +1,7 @@ package org.tasks.ui.editviewmodel +import androidx.lifecycle.SavedStateHandle +import com.todoroo.astrid.activity.TaskEditFragment import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.dao.Database import com.todoroo.astrid.dao.TaskDao @@ -12,11 +14,11 @@ import com.todoroo.astrid.timers.TimerPlugin import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.runBlocking -import org.junit.Before import org.tasks.calendars.CalendarEventProvider import org.tasks.data.AlarmDao import org.tasks.data.LocationDao import org.tasks.data.TagDataDao +import org.tasks.data.UserActivityDao import org.tasks.injection.InjectingTestCase import org.tasks.location.GeofenceApi import org.tasks.preferences.DefaultFilterProvider @@ -41,42 +43,39 @@ open class BaseTaskEditViewModelTest : InjectingTestCase() { @Inject lateinit var locationDao: LocationDao @Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var alarmDao: AlarmDao + @Inject lateinit var userActivityDao: UserActivityDao protected lateinit var viewModel: TaskEditViewModel - @Before - override fun setUp() { - super.setUp() + protected fun setup(task: Task) = runBlocking { viewModel = TaskEditViewModel( - context, - taskDao, - taskDeleter, - timerPlugin, - PermissivePermissionChecker(context), - calendarEventProvider, - gCalHelper, - taskMover, - db.locationDao, - geofenceApi, - db.tagDao, - db.tagDataDao, - preferences, - db.googleTaskDao, - db.caldavDao, - taskCompleter, - alarmService, + context, + SavedStateHandle().apply { + set(TaskEditFragment.EXTRA_TASK, task) + set(TaskEditFragment.EXTRA_LIST, defaultFilterProvider.getList(task)) + set(TaskEditFragment.EXTRA_LOCATION, locationDao.getLocation(task, preferences)) + set(TaskEditFragment.EXTRA_TAGS, tagDataDao.getTags(task)) + set(TaskEditFragment.EXTRA_ALARMS, alarmDao.getAlarms(task)) + }, + taskDao, + taskDeleter, + timerPlugin, + PermissivePermissionChecker(context), + calendarEventProvider, + gCalHelper, + taskMover, + db.locationDao, + geofenceApi, + db.tagDao, + db.tagDataDao, + preferences, + db.googleTaskDao, + db.caldavDao, + taskCompleter, + alarmService, MutableSharedFlow(), MutableSharedFlow(), - ) - } - - protected fun setup(task: Task) = runBlocking { - viewModel.setup( - task, - defaultFilterProvider.getList(task), - locationDao.getLocation(task, preferences), - tagDataDao.getTags(task), - alarmDao.getAlarms(task) + userActivityDao = userActivityDao, ) } diff --git a/app/src/androidTest/java/org/tasks/ui/editviewmodel/RepeatTests.kt b/app/src/androidTest/java/org/tasks/ui/editviewmodel/RepeatTests.kt deleted file mode 100644 index 2cdbcf3bd..000000000 --- a/app/src/androidTest/java/org/tasks/ui/editviewmodel/RepeatTests.kt +++ /dev/null @@ -1,44 +0,0 @@ -package org.tasks.ui.editviewmodel - -import com.natpryce.makeiteasy.MakeItEasy.with -import dagger.hilt.android.testing.HiltAndroidTest -import dagger.hilt.android.testing.UninstallModules -import kotlinx.coroutines.runBlocking -import org.junit.Assert.assertEquals -import org.junit.Test -import org.tasks.injection.ProductionModule -import org.tasks.makers.TaskMaker -import org.tasks.makers.TaskMaker.newTask - -@UninstallModules(ProductionModule::class) -@HiltAndroidTest -class RepeatTests : BaseTaskEditViewModelTest() { - @Test - fun changeRepeatAfterCompletion() = runBlocking { - val task = newTask(with(TaskMaker.RECUR, "FREQ=DAILY;INTERVAL=1")) - setup(task) - - viewModel.repeatAfterCompletion = true - - save() - - assertEquals( - "FREQ=DAILY;INTERVAL=1;FROM=COMPLETION", - taskDao.fetch(task.id)!!.recurrence) - } - - @Test - fun removeRepeatAfterCompletion() = runBlocking { - val task = newTask() - task.recurrence = "RRULE:FREQ=DAILY;INTERVAL=1;FROM=COMPLETION" - setup(task) - - viewModel.repeatAfterCompletion = false - - save() - - assertEquals( - "RRULE:FREQ=DAILY;INTERVAL=1", - taskDao.fetch(task.id)!!.recurrence) - } -} \ No newline at end of file diff --git a/app/src/commonTest/java/org/tasks/makers/TaskMaker.kt b/app/src/commonTest/java/org/tasks/makers/TaskMaker.kt index 70ef880e3..3172e409d 100644 --- a/app/src/commonTest/java/org/tasks/makers/TaskMaker.kt +++ b/app/src/commonTest/java/org/tasks/makers/TaskMaker.kt @@ -11,6 +11,7 @@ import com.todoroo.astrid.data.Task.Companion.NO_UUID import org.tasks.Strings import org.tasks.date.DateTimeUtils import org.tasks.makers.Maker.make +import org.tasks.repeats.RecurrenceUtils.newRecur import org.tasks.time.DateTime object TaskMaker { @@ -80,7 +81,12 @@ object TaskMaker { task.reminderLast = reminderLast.millis } lookup.valueOf(RECUR, null as String?)?.let { - task.setRecurrence(it, lookup.valueOf(AFTER_COMPLETE, false)) + task.setRecurrence(newRecur(it)) + } + task.repeatFrom = if (lookup.valueOf(AFTER_COMPLETE, false)) { + Task.RepeatFrom.COMPLETION_DATE + } else { + Task.RepeatFrom.DUE_DATE } task.notes = lookup.valueOf(DESCRIPTION, null as String?) task.isCollapsed = lookup.valueOf(COLLAPSED, false) diff --git a/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt b/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt index 8a4772af1..6171d72f1 100644 --- a/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt +++ b/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt @@ -94,13 +94,6 @@ class ThunderbirdTests { assertEquals(Task.Priority.HIGH, vtodo("thunderbird/priority_high.txt").priority) } - @Test - fun getRepeatUntil() { - assertEquals( - DateTime(2020, 7, 31, 11, 0, 0, 0).millis, - vtodo("thunderbird/repeat_until_date_time.txt").repeatUntil) - } - @Test fun dontTruncateTimeFromUntil() { val (task, caldavTask, remote) = setup("thunderbird/repeat_until_date_time.txt")