diff --git a/app/src/test/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailRepositoryTest.kt b/app/src/test/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailRepositoryTest.kt index 27ec121..b7d1352 100644 --- a/app/src/test/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailRepositoryTest.kt +++ b/app/src/test/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailRepositoryTest.kt @@ -47,6 +47,26 @@ class BoardDetailRepositoryTest { assertEquals("board-1", apiClient.lastBoardId) } + @Test + fun getBoardDetailReusesPersistedWorkspaceAfterFirstFetch() = runTest { + val apiClient = FakeBoardDetailApiClient().apply { + workspacesResult = BoardsApiResult.Success(listOf(WorkspaceSummary("ws-1", "Main"))) + boardDetailResult = BoardsApiResult.Success(sampleBoardDetail()) + } + val sessionStore = InMemorySessionStore(baseUrl = "https://kan.bn/") + val repository = createRepository(sessionStore = sessionStore, apiClient = apiClient) + + val firstResult = repository.getBoardDetail("board-1") + apiClient.workspacesResult = BoardsApiResult.Failure("Should not be called") + val secondResult = repository.getBoardDetail("board-2") + + assertTrue(firstResult is BoardsApiResult.Success<*>) + assertTrue(secondResult is BoardsApiResult.Success<*>) + assertEquals("ws-1", sessionStore.getWorkspaceId()) + assertEquals(1, apiClient.listWorkspacesCalls) + assertEquals("board-2", apiClient.lastBoardId) + } + @Test fun getBoardDetailFailsWhenNoWorkspacesAvailable() = runTest { val apiClient = FakeBoardDetailApiClient().apply { @@ -271,6 +291,23 @@ class BoardDetailRepositoryTest { assertEquals(listOf("card-2", "card-1"), apiClient.deletedCardIds) } + @Test + fun deleteCardsReturnsUnknownErrorWhenAllFailAndFirstMessageIsBlank() = runTest { + val apiClient = FakeBoardDetailApiClient().apply { + deleteOutcomes = mapOf( + "card-2" to BoardsApiResult.Failure(" "), + "card-1" to BoardsApiResult.Failure("Delete failed second"), + ) + } + val repository = createRepository(apiClient = apiClient) + + val result = repository.deleteCards(cardIds = listOf(" card-2 ", "card-1", "card-2")) + + assertTrue(result is CardBatchMutationResult.Failure) + assertEquals("Unknown error", (result as CardBatchMutationResult.Failure).message) + assertEquals(listOf("card-2", "card-1"), apiClient.deletedCardIds) + } + private fun createRepository( sessionStore: InMemorySessionStore = InMemorySessionStore(baseUrl = "https://kan.bn/", workspaceId = "ws-1"), apiClient: FakeBoardDetailApiClient = FakeBoardDetailApiClient(),