diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-07-15 18:36:00 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-07-16 02:54:17 +0000 |
| commit | 0aa5bd0de79df82958a7314a7db6e91e892d28b7 (patch) | |
| tree | e3829836614846d2faa436cdbfd6802e9676472b /android/app/src/test | |
| parent | c1ba9994367dd077ba2422d31a658a0c62e2520b (diff) | |
feat(widget): add Android data layer for projects and label colors
Diffstat (limited to 'android/app/src/test')
| -rw-r--r-- | android/app/src/test/java/org/terst/doot/widget/WidgetRepositoryTest.kt | 44 |
1 files changed, 44 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 31e6642..8712124 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 @@ -105,4 +105,48 @@ class WidgetRepositoryTest { 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")) } + + @Test + fun `fetchProjects returns success with valid JSON`() = runTest { + val json = """[{"id":"proj-1","name":"Sailing prep","color":"#3B82F6","created_at":"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.fetchProjects() + + assertTrue(result.isSuccess) + val projects = result.getOrThrow() + assertEquals(1, projects.size) + assertEquals("Sailing prep", projects[0].name) + assertEquals("#3B82F6", projects[0].color) + } + + @Test + fun `createProject returns success with valid JSON`() = runTest { + val json = """{"id":"proj-1","name":"Sailing prep","color":"#3B82F6","created_at":"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.createProject("Sailing prep", "#3B82F6") + + assertTrue(result.isSuccess) + assertEquals("Sailing prep", result.getOrThrow().name) + } + + @Test + fun `fetchLabelColors returns success with valid JSON`() = runTest { + val json = """[{"name":"chore","color":"#F59E0B"}]""" + 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.fetchLabelColors() + + assertTrue(result.isSuccess) + val colors = result.getOrThrow() + assertEquals(1, colors.size) + assertEquals("chore", colors[0].name) + } } |
