fix: derive createList append index from board detail
This commit is contained in:
@@ -86,12 +86,23 @@ class BoardDetailRepository(
|
||||
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(
|
||||
baseUrl = session.baseUrl,
|
||||
apiKey = session.apiKey,
|
||||
boardPublicId = normalizedBoardPublicId,
|
||||
title = normalizedTitle,
|
||||
appendIndex = 0,
|
||||
appendIndex = appendIndex,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -287,15 +287,43 @@ class BoardDetailRepositoryTest {
|
||||
|
||||
@Test
|
||||
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 result = repository.createList(boardPublicId = " board-1 ", title = " New List ")
|
||||
|
||||
assertTrue(result is BoardsApiResult.Success<*>)
|
||||
assertEquals("board-1", apiClient.lastBoardId)
|
||||
assertEquals("board-1", apiClient.lastCreateListBoardPublicId)
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user