Skip to content

Commit

Permalink
fix: wrong error after adding folder
Browse files Browse the repository at this point in the history
  • Loading branch information
Garzas committed Jan 23, 2025
1 parent a71af95 commit 88ee323
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,31 @@ class NewFolderViewModel @Inject constructor(
)
.collect { (folders, text) ->
val nameExist = folders.any { it.name == text.trim() }
folderNameState = folderNameState.copy(
buttonEnabled = text.trim().isNotEmpty() && !nameExist && text.length <= NAME_MAX_COUNT,
error = when {
text.trim().isEmpty() -> FolderNameState.NameError.TextFieldError.NameEmptyError
text.length > NAME_MAX_COUNT -> FolderNameState.NameError.TextFieldError.NameExceedLimitError
nameExist -> FolderNameState.NameError.TextFieldError.NameAlreadyExistError
else -> FolderNameState.NameError.None
}
)
if (!folderNameState.loading) {
folderNameState = folderNameState.copy(
buttonEnabled = text.trim().isNotEmpty() && !nameExist && text.length <= NAME_MAX_COUNT,
error = when {
text.trim().isEmpty() -> FolderNameState.NameError.TextFieldError.NameEmptyError
text.length > NAME_MAX_COUNT -> FolderNameState.NameError.TextFieldError.NameExceedLimitError
nameExist -> FolderNameState.NameError.TextFieldError.NameAlreadyExistError
else -> FolderNameState.NameError.None
}
)
}
}
}
}

fun createFolder(folderName: String) {
viewModelScope.launch {
folderNameState = folderNameState.copy(
loading = true
)
when (val result = createConversationFolder(folderName)) {
is CreateConversationFolderUseCase.Result.Failure -> {
folderNameState = folderNameState.copy(
loading = false
)
_infoMessage.emit(
UIText.StringResource(
R.string.new_folder_failure,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,24 @@ class NewFolderViewModelTest {
assertEquals(folderId, viewModel.folderNameState.folderId)
}

@Test
fun `when folder creation succeeds, then state will not show NameAlreadyExistError`() = runTest {
val folderId = "123"
val (arrangement, viewModel) = Arrangement()
.withCreateFolderResult(CreateConversationFolderUseCase.Result.Success(folderId))
.arrange {}

arrangement.userFoldersChannel.send(listOf())
arrangement.updateTextState("NewFolder")

viewModel.createFolder("NewFolder")
arrangement.userFoldersChannel.send(listOf(ConversationFolder(id = folderId, name = "NewFolder", type = FolderType.USER)))
advanceUntilIdle()

assertEquals(FolderNameState.NameError.None, viewModel.folderNameState.error)
assertTrue(viewModel.folderNameState.loading)
}

private class Arrangement {

@MockK
Expand Down

0 comments on commit 88ee323

Please sign in to comment.