Skip to content

Commit

Permalink
test fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Garzas committed Dec 5, 2024
1 parent 6e18c13 commit efd9b51
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
*/
package com.wire.kalium.logic.feature.conversation.folder

import com.wire.kalium.logic.StorageFailure
import com.wire.kalium.logic.data.conversation.ConversationFolder
import com.wire.kalium.logic.data.conversation.folders.ConversationFolderRepository
import com.wire.kalium.logic.feature.conversation.folder.GetFavoriteFolderUseCase.Result
import com.wire.kalium.logic.functional.Either
import com.wire.kalium.logic.functional.flatMap
import com.wire.kalium.logic.functional.flatMapLeft
import com.wire.kalium.logic.functional.fold
Expand All @@ -45,8 +47,12 @@ internal class GetFavoriteFolderUseCaseImpl(
override suspend operator fun invoke(): Result {
return conversationFolderRepository.getFavoriteConversationFolder()
.flatMapLeft {
conversationFolderRepository.fetchConversationFolders().flatMap {
conversationFolderRepository.getFavoriteConversationFolder()
if(it is StorageFailure.DataNotFound) {
conversationFolderRepository.fetchConversationFolders().flatMap {
conversationFolderRepository.getFavoriteConversationFolder()
}
} else {
Either.Left(it)
}
}
.fold(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package com.wire.kalium.logic.feature.conversation.folder

import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.StorageFailure
import com.wire.kalium.logic.data.conversation.ConversationFolder
import com.wire.kalium.logic.data.conversation.folders.ConversationFolderRepository
import com.wire.kalium.logic.feature.conversation.folder.GetFavoriteFolderUseCase.Result
Expand All @@ -28,6 +29,7 @@ import io.mockative.coEvery
import io.mockative.coVerify
import io.mockative.mock
import io.mockative.once
import io.mockative.twice
import kotlinx.coroutines.test.runTest
import kotlin.test.Test
import kotlin.test.assertEquals
Expand All @@ -53,7 +55,7 @@ class GetFavoriteFolderUseCaseTest {
}

@Test
fun givenFavoriteFolderDoesNotExist_WhenInvoked_ThenReturnFailure() = runTest {
fun givenFavoriteFolderReturnsFailure_WhenInvoked_ThenReturnFailure() = runTest {
val (arrangement, getFavoriteFolderUseCase) = Arrangement()
.withFavoriteFolder(Either.Left(CoreFailure.Unknown(null)))
.arrange()
Expand All @@ -67,6 +69,25 @@ class GetFavoriteFolderUseCaseTest {
}.wasInvoked(exactly = once)
}

@Test
fun givenFavoriteFolderDoesNotExist_WhenInvoked_ThenFetchConversationFoldersIsTriggered() = runTest {
val (arrangement, getFavoriteFolderUseCase) = Arrangement()
.withFavoriteFolder(Either.Left(StorageFailure.DataNotFound))
.withFetchConversationFolders(Either.Right(Unit))
.arrange()

val result = getFavoriteFolderUseCase()

assertIs<Result.Failure>(result)

coVerify {
arrangement.conversationFolderRepository.getFavoriteConversationFolder()
}.wasInvoked(exactly = twice)
coVerify {
arrangement.conversationFolderRepository.fetchConversationFolders()
}.wasInvoked(exactly = once)
}

private class Arrangement {
@Mock
val conversationFolderRepository = mock(ConversationFolderRepository::class)
Expand All @@ -81,6 +102,12 @@ class GetFavoriteFolderUseCaseTest {
}.returns(either)
}

suspend fun withFetchConversationFolders(either: Either<CoreFailure, Unit>) = apply {
coEvery {
conversationFolderRepository.fetchConversationFolders()
}.returns(either)
}

fun arrange(block: Arrangement.() -> Unit = { }) = apply(block).let { this to getFavoriteFolderUseCase }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ class SlowSyncWorkerTest {
.withJoinMLSConversationsSuccess()
.withResolveOneOnOneConversationsSuccess()
.withFetchLegalHoldStatusSuccess()
.withSyncFoldersSuccess()
.arrange()

worker.slowSyncStepsFlow(successfullyMigration).collect()
Expand Down Expand Up @@ -410,7 +409,6 @@ class SlowSyncWorkerTest {
.withJoinMLSConversationsSuccess()
.withResolveOneOnOneConversationsSuccess()
.withFetchLegalHoldStatusSuccess()
.withSyncFoldersSuccess()
.arrange()

slowSyncWorker.slowSyncStepsFlow(successfullyMigration).collect()
Expand Down Expand Up @@ -514,9 +512,6 @@ class SlowSyncWorkerTest {
@Mock
val fetchLegalHoldForSelfUserFromRemoteUseCase = mock(FetchLegalHoldForSelfUserFromRemoteUseCase::class)

@Mock
val syncConversationFoldersUseCase = mock(SyncConversationFoldersUseCase::class)

init {
runBlocking {
withLastProcessedEventIdReturning(Either.Right("lastProcessedEventId"))
Expand All @@ -534,8 +529,7 @@ class SlowSyncWorkerTest {
joinMLSConversations = joinMLSConversations,
updateSupportedProtocols = updateSupportedProtocols,
fetchLegalHoldForSelfUserFromRemoteUseCase = fetchLegalHoldForSelfUserFromRemoteUseCase,
oneOnOneResolver = oneOnOneResolver,
syncConversationFolders = syncConversationFoldersUseCase
oneOnOneResolver = oneOnOneResolver
)

suspend fun withSyncSelfUserFailure() = apply {
Expand Down Expand Up @@ -651,12 +645,6 @@ class SlowSyncWorkerTest {
oneOnOneResolver.resolveAllOneOnOneConversations(any())
}.returns(success)
}

suspend fun withSyncFoldersSuccess() = apply {
coEvery {
syncConversationFoldersUseCase.invoke()
}.returns(success)
}
}

private companion object {
Expand Down

0 comments on commit efd9b51

Please sign in to comment.