Fix recurrence string sanitizer

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

@ -1,5 +1,6 @@
package org.tasks.opentasks package org.tasks.opentasks
import com.google.ical.values.RRule
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules import dagger.hilt.android.testing.UninstallModules
@ -16,8 +17,10 @@ import org.tasks.data.CaldavDao
import org.tasks.data.TaskDao import org.tasks.data.TaskDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule 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.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.RRULE
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
@ -110,8 +113,8 @@ class OpenTasksSynchronizerTest : InjectingTestCase() {
val (_, list) = openTaskDao.insertList() val (_, list) = openTaskDao.insertList()
val taskId = taskDao.insert(newTask()) val taskId = taskDao.insert(newTask())
caldavDao.insert(newCaldavTask( caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid), with(CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId) with(TASK, taskId)
)) ))
synchronizer.sync() synchronizer.sync()
@ -120,4 +123,19 @@ class OpenTasksSynchronizerTest : InjectingTestCase() {
assertEquals(1, tasks.size) assertEquals(1, tasks.size)
assertEquals(taskId, caldavDao.getTaskByRemoteId(list.uuid!!, tasks[0].uid!!)?.task) 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" 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 * Creates due date for this task. If this due date has no time associated, we move it to the last
* millisecond of the day. * millisecond of the day.
@ -603,7 +605,7 @@ class Task : Parcelable {
@JvmStatic @JvmStatic
fun String?.sanitizeRRule(): String? = this fun String?.sanitizeRRule(): String? = this
?.replace("BYDAY=;", "") ?.replace("BYDAY=;", "")
?.replace("COUNT=-1;", "") ?.replace(INVALID_COUNT, "")
@JvmStatic fun isUuidEmpty(uuid: String?): Boolean { @JvmStatic fun isUuidEmpty(uuid: String?): Boolean {
return NO_UUID == uuid || Strings.isNullOrEmpty(uuid) return NO_UUID == uuid || Strings.isNullOrEmpty(uuid)

Loading…
Cancel
Save