Fix recurrence string sanitizer

pull/1330/head
Alex Baker 3 years ago
parent c7209904c9
commit bdaf1f8ee4

@ -1,5 +1,6 @@
package org.tasks.opentasks
import com.google.ical.values.RRule
import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
@ -16,8 +17,10 @@ import org.tasks.data.CaldavDao
import org.tasks.data.TaskDao
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule
import org.tasks.makers.CaldavTaskMaker
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.RRULE
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@ -110,8 +113,8 @@ class OpenTasksSynchronizerTest : InjectingTestCase() {
val (_, list) = openTaskDao.insertList()
val taskId = taskDao.insert(newTask())
caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId)
with(CALENDAR, list.uuid),
with(TASK, taskId)
))
synchronizer.sync()
@ -120,4 +123,19 @@ class OpenTasksSynchronizerTest : InjectingTestCase() {
assertEquals(1, tasks.size)
assertEquals(taskId, caldavDao.getTaskByRemoteId(list.uuid!!, tasks[0].uid!!)?.task)
}
@Test
fun sanitizeRecurrenceRule() = runBlocking {
val (_, list) = openTaskDao.insertList()
val taskId = taskDao.insert(newTask(with(RRULE, RRule("RRULE:FREQ=WEEKLY;COUNT=-1"))))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(TASK, taskId)
))
synchronizer.sync()
val task = openTaskDao.getTasks().first()
assertEquals("FREQ=WEEKLY", task.rRule?.value)
}
}

@ -552,6 +552,8 @@ class Task : Parcelable {
const val TRANS_SUPPRESS_REFRESH = "suppress-refresh"
private val INVALID_COUNT = ";?COUNT=-1".toRegex()
/**
* Creates due date for this task. If this due date has no time associated, we move it to the last
* millisecond of the day.
@ -603,7 +605,7 @@ class Task : Parcelable {
@JvmStatic
fun String?.sanitizeRRule(): String? = this
?.replace("BYDAY=;", "")
?.replace("COUNT=-1;", "")
?.replace(INVALID_COUNT, "")
@JvmStatic fun isUuidEmpty(uuid: String?): Boolean {
return NO_UUID == uuid || Strings.isNullOrEmpty(uuid)

Loading…
Cancel
Save