fix: derive createList append index from board detail

This commit is contained in:
2026-03-16 13:56:45 -04:00
parent 85659f070b
commit 8022647047
2 changed files with 42 additions and 3 deletions

View File

@@ -86,12 +86,23 @@ class BoardDetailRepository(
is BoardsApiResult.Failure -> return sessionResult is BoardsApiResult.Failure -> return sessionResult
} }
val appendIndex = when (
val boardDetailResult = apiClient.getBoardDetail(
baseUrl = session.baseUrl,
apiKey = session.apiKey,
boardId = normalizedBoardPublicId,
)
) {
is BoardsApiResult.Success -> boardDetailResult.value.lists.size
is BoardsApiResult.Failure -> return BoardsApiResult.Failure(boardDetailResult.message)
}
return apiClient.createList( return apiClient.createList(
baseUrl = session.baseUrl, baseUrl = session.baseUrl,
apiKey = session.apiKey, apiKey = session.apiKey,
boardPublicId = normalizedBoardPublicId, boardPublicId = normalizedBoardPublicId,
title = normalizedTitle, title = normalizedTitle,
appendIndex = 0, appendIndex = appendIndex,
) )
} }

View File

@@ -287,15 +287,43 @@ class BoardDetailRepositoryTest {
@Test @Test
fun createListDelegatesToApiWithTrimmedIds() = runTest { fun createListDelegatesToApiWithTrimmedIds() = runTest {
val apiClient = FakeBoardDetailApiClient() val apiClient = FakeBoardDetailApiClient().apply {
boardDetailResult = BoardsApiResult.Success(
BoardDetail(
id = "board-1",
title = "Board",
lists = listOf(
BoardListDetail(id = "list-1", title = "One", cards = emptyList()),
BoardListDetail(id = "list-2", title = "Two", cards = emptyList()),
BoardListDetail(id = "list-3", title = "Three", cards = emptyList()),
),
),
)
}
val repository = createRepository(apiClient = apiClient) val repository = createRepository(apiClient = apiClient)
val result = repository.createList(boardPublicId = " board-1 ", title = " New List ") val result = repository.createList(boardPublicId = " board-1 ", title = " New List ")
assertTrue(result is BoardsApiResult.Success<*>) assertTrue(result is BoardsApiResult.Success<*>)
assertEquals("board-1", apiClient.lastBoardId)
assertEquals("board-1", apiClient.lastCreateListBoardPublicId) assertEquals("board-1", apiClient.lastCreateListBoardPublicId)
assertEquals("New List", apiClient.lastCreateListTitle) assertEquals("New List", apiClient.lastCreateListTitle)
assertEquals(0, apiClient.lastCreateListAppendIndex) assertEquals(3, apiClient.lastCreateListAppendIndex)
}
@Test
fun createListPropagatesFailureWhenBoardDetailPrefetchFails() = runTest {
val apiClient = FakeBoardDetailApiClient().apply {
boardDetailResult = BoardsApiResult.Failure("Cannot load board")
}
val repository = createRepository(apiClient = apiClient)
val result = repository.createList(boardPublicId = "board-1", title = "New List")
assertTrue(result is BoardsApiResult.Failure)
assertEquals("Cannot load board", (result as BoardsApiResult.Failure).message)
assertEquals("board-1", apiClient.lastBoardId)
assertEquals(null, apiClient.lastCreateListBoardPublicId)
} }
@Test @Test