fix: derive createList append index from board detail
This commit is contained in:
@@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user