From d745879e1ea381d2a1b3360b863dc806ca1715a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milosch=20F=C3=BCllgraf?= Date: Thu, 7 Aug 2025 21:58:08 +0200 Subject: [PATCH] Add tests for sync --- .../org/tasks/caldav/iCalendarMergeTest.kt | 88 +++++++++++++++++++ .../test/java/org/tasks/makers/TaskMaker.kt | 4 + .../test/java/org/tasks/makers/iCalMaker.kt | 6 ++ 3 files changed, 98 insertions(+) diff --git a/app/src/test/java/org/tasks/caldav/iCalendarMergeTest.kt b/app/src/test/java/org/tasks/caldav/iCalendarMergeTest.kt index 60d8a91b1..eccf925d7 100644 --- a/app/src/test/java/org/tasks/caldav/iCalendarMergeTest.kt +++ b/app/src/test/java/org/tasks/caldav/iCalendarMergeTest.kt @@ -655,6 +655,94 @@ class iCalendarMergeTest { assertEquals("789", it.remoteParent) } + @Test + fun remoteSetsEstimated() = + newTask() + .applyRemote( + remote = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 2*60*60)), + local = null + ) + .let { + assertEquals(2*60*60, it.estimatedSeconds) + } + + @Test + fun remoteRemovesEstimated() = + newTask(with(TaskMaker.ESTIMATED_SECONDS, 2*60*60)) + .applyRemote( + remote = newIcal(), + local = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 2*60*60)) + ) + .let { + assertEquals(0, it.estimatedSeconds) + } + + @Test + fun localResetsEstimated() = + newTask() + .applyRemote( + remote = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 2*60*60)), + local = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 2*60*60)) + ) + .let { + assertEquals(0, it.estimatedSeconds) + } + + @Test + fun localBeatsRemoteEstimated() = + newTask(with(TaskMaker.ESTIMATED_SECONDS, 2*60*60)) + .applyRemote( + remote = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 4*60*60)), + local = newIcal(with(iCalMaker.ESTIMATED_SECONDS, 3*60*60)) + ) + .let { + assertEquals(2*60*60, it.estimatedSeconds) + } + + @Test + fun remoteSetsElapsed() = + newTask() + .applyRemote( + remote = newIcal(with(iCalMaker.ELAPSED_SECONDS, 2*60*60)), + local = null + ) + .let { + assertEquals(2*60*60, it.elapsedSeconds) + } + + @Test + fun remoteRemovesElapsed() = + newTask(with(TaskMaker.ELAPSED_SECONDS, 2*60*60)) + .applyRemote( + remote = newIcal(), + local = newIcal(with(iCalMaker.ELAPSED_SECONDS, 2*60*60)) + ) + .let { + assertEquals(0, it.elapsedSeconds) + } + + @Test + fun localResetsElapsed() = + newTask() + .applyRemote( + remote = newIcal(with(iCalMaker.ELAPSED_SECONDS, 2*60*60)), + local = newIcal(with(iCalMaker.ELAPSED_SECONDS, 2*60*60)) + ) + .let { + assertEquals(0, it.elapsedSeconds) + } + + @Test + fun localBeatsRemoteElapsed() = + newTask(with(TaskMaker.ELAPSED_SECONDS, 2*60*60)) + .applyRemote( + remote = newIcal(with(iCalMaker.ELAPSED_SECONDS, 4*60*60)), + local = newIcal(with(iCalMaker.ELAPSED_SECONDS, 3*60*60)) + ) + .let { + assertEquals(2*60*60, it.elapsedSeconds) + } + companion object { private fun DateTime.allDay() = createDueDate(URGENCY_SPECIFIC_DAY, millis) diff --git a/app/src/test/java/org/tasks/makers/TaskMaker.kt b/app/src/test/java/org/tasks/makers/TaskMaker.kt index ecf42fd7a..d005b3cfa 100644 --- a/app/src/test/java/org/tasks/makers/TaskMaker.kt +++ b/app/src/test/java/org/tasks/makers/TaskMaker.kt @@ -35,6 +35,8 @@ object TaskMaker { val COLLAPSED: Property = newProperty() val DESCRIPTION: Property = newProperty() val ORDER: Property = newProperty() + val ESTIMATED_SECONDS: Property = newProperty() + val ELAPSED_SECONDS: Property = newProperty() private val instantiator = Instantiator { lookup: PropertyLookup -> val creationTime = lookup.valueOf(CREATION_TIME, DateTimeUtils.newDateTime()) @@ -62,6 +64,8 @@ object TaskMaker { order = lookup.valueOf(ORDER, null as Long?), creationDate = creationTime.millis, modificationDate = lookup.valueOf(MODIFICATION_TIME, creationTime).millis, + estimatedSeconds = lookup.valueOf(ESTIMATED_SECONDS, 0), + elapsedSeconds = lookup.valueOf(ELAPSED_SECONDS, 0) ) lookup.valueOf(START_DATE, null as DateTime?)?.let { task.hideUntil = task.createHideUntil(HIDE_UNTIL_SPECIFIC_DAY, it.millis) diff --git a/app/src/test/java/org/tasks/makers/iCalMaker.kt b/app/src/test/java/org/tasks/makers/iCalMaker.kt index 5c49f547b..0e44dc574 100644 --- a/app/src/test/java/org/tasks/makers/iCalMaker.kt +++ b/app/src/test/java/org/tasks/makers/iCalMaker.kt @@ -14,6 +14,8 @@ import net.fortuna.ical4j.model.property.RRule import net.fortuna.ical4j.model.property.Status import org.tasks.caldav.iCalendar import org.tasks.caldav.iCalendar.Companion.collapsed +import org.tasks.caldav.iCalendar.Companion.elapsedSeconds +import org.tasks.caldav.iCalendar.Companion.estimatedSeconds import org.tasks.caldav.iCalendar.Companion.order import org.tasks.caldav.iCalendar.Companion.parent import org.tasks.time.DateTime @@ -35,6 +37,8 @@ object iCalMaker { val COLLAPSED: Property = newProperty() val RRULE: Property = newProperty() val STATUS: Property = newProperty() + val ESTIMATED_SECONDS: Property = newProperty() + val ELAPSED_SECONDS: Property = newProperty() private val instantiator = Instantiator { lookup: PropertyLookup -> val task = Task() @@ -65,6 +69,8 @@ object iCalMaker { task.collapsed = lookup.valueOf(COLLAPSED, false) task.rRule = lookup.valueOf(RRULE, null as String?)?.let { RRule(it) } task.status = lookup.valueOf(STATUS, null as Status?) + task.estimatedSeconds = lookup.valueOf(ESTIMATED_SECONDS, 0) + task.elapsedSeconds = lookup.valueOf(ELAPSED_SECONDS, 0) task } fun newIcal(vararg properties: PropertyValue): Task {