diff options
Diffstat (limited to 'android/app/src/test/java/org')
| -rw-r--r-- | android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt b/android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt index 09fd467..31e6642 100644 --- a/android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt +++ b/android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt @@ -62,4 +62,47 @@ class WidgetRepositoryTest { assertEquals("Bearer mysecret", capturedRequest.captured.header("Authorization")) } + + @Test + fun `fetchTaskDetail returns success with valid JSON`() = runTest { + val json = """{"id":"rec-1","title":"Water plants","description":"Use the blue can","due_date":"2026-07-13T00:00:00-10:00","completed":false,"recurrence":{"freq":"weekly","interval":1,"weekdays":[1,3,5]},"next_date":"2026-07-15T00:00:00-10:00"}""" + every { mockClient.newCall(any()) } returns mockCall + every { mockCall.execute() } returns responseOf(200, json) + + val repo = WidgetRepository(mockClient, "https://doot.example.com", "token") + val result = repo.fetchTaskDetail("rec-1") + + assertTrue(result.isSuccess) + val detail = result.getOrThrow() + assertEquals("Water plants", detail.title) + assertEquals("weekly", detail.recurrence?.freq) + assertEquals(listOf(1, 3, 5), detail.recurrence?.weekdays) + assertEquals("2026-07-15T00:00:00-10:00", detail.nextDate) + } + + @Test + fun `fetchTaskDetail returns failure on non-200`() = runTest { + every { mockClient.newCall(any()) } returns mockCall + every { mockCall.execute() } returns responseOf(404, "not found") + + val repo = WidgetRepository(mockClient, "https://doot.example.com", "token") + val result = repo.fetchTaskDetail("does-not-exist") + + assertTrue(result.isFailure) + } + + @Test + fun `fetchTaskDetail requests the given id with source=doot`() = runTest { + val json = """{"id":"rec-1","title":"Water plants","description":"","completed":false}""" + val capturedRequest = slot<Request>() + every { mockClient.newCall(capture(capturedRequest)) } returns mockCall + every { mockCall.execute() } returns responseOf(200, json) + + val repo = WidgetRepository(mockClient, "https://doot.example.com", "token") + repo.fetchTaskDetail("rec-1") + + val url = capturedRequest.captured.url.toString() + assertTrue("expected id=rec-1 in URL, got $url", url.contains("id=rec-1")) + assertTrue("expected source=doot in URL, got $url", url.contains("source=doot")) + } } |
