ConversationsRepo unit tests use standard flow API
- Remove turbine library MAILAND-1647
This commit is contained in:
parent
7cecbafbaa
commit
b14584a7fd
|
@ -351,10 +351,7 @@ dependencies {
|
|||
`butterknife-compiler`
|
||||
)
|
||||
|
||||
testImplementation(
|
||||
project(Module.testAndroid),
|
||||
`turbine`
|
||||
)
|
||||
testImplementation(project(Module.testAndroid))
|
||||
androidTestUtil(`orchestrator`)
|
||||
androidTestImplementation(
|
||||
project(Module.testAndroidInstrumented),
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
package ch.protonmail.android.mailbox.data
|
||||
|
||||
import app.cash.turbine.test
|
||||
import ch.protonmail.android.api.ProtonMailApiManager
|
||||
import ch.protonmail.android.api.models.MessageRecipient
|
||||
import ch.protonmail.android.core.Constants
|
||||
|
@ -42,6 +41,8 @@ import io.mockk.impl.annotations.MockK
|
|||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.take
|
||||
import kotlinx.coroutines.flow.toList
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import me.proton.core.domain.arch.DataResult
|
||||
|
@ -205,21 +206,21 @@ class ConversationsRepositoryImplTest : CoroutinesTest, ArchTest {
|
|||
coEvery { api.fetchConversations(any(), testUserId) } returns conversationsRemote
|
||||
|
||||
// when
|
||||
conversationsRepository.getConversations(parameters, testUserId).test {
|
||||
// Then
|
||||
val actualLocalItems = expectItem() as DataResult.Success
|
||||
assertEquals(ResponseSource.Local, actualLocalItems.source)
|
||||
val result = conversationsRepository.getConversations(parameters, testUserId).take(3).toList()
|
||||
|
||||
val actualProcessingResult = expectItem() as DataResult.Processing
|
||||
assertEquals(ResponseSource.Remote, actualProcessingResult.source)
|
||||
// Then
|
||||
val actualLocalItems = result[0] as DataResult.Success
|
||||
assertEquals(ResponseSource.Local, actualLocalItems.source)
|
||||
|
||||
val actualRemoteItems = expectItem() as DataResult.Success
|
||||
assertEquals(ResponseSource.Remote, actualRemoteItems.source)
|
||||
val actualProcessingResult = result[1] as DataResult.Processing
|
||||
assertEquals(ResponseSource.Remote, actualProcessingResult.source)
|
||||
|
||||
val expectedConversations = conversationsRemote.conversationResponse.toListLocal(testUserId.s)
|
||||
coVerify { api.fetchConversations(parameters, testUserId) }
|
||||
coVerify { conversationDao.insertOrUpdate(*expectedConversations.toTypedArray()) }
|
||||
}
|
||||
val actualRemoteItems = result[2] as DataResult.Success
|
||||
assertEquals(ResponseSource.Remote, actualRemoteItems.source)
|
||||
|
||||
val expectedConversations = conversationsRemote.conversationResponse.toListLocal(testUserId.s)
|
||||
coVerify { api.fetchConversations(parameters, testUserId) }
|
||||
coVerify { conversationDao.insertOrUpdate(*expectedConversations.toTypedArray()) }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -259,31 +260,31 @@ class ConversationsRepositoryImplTest : CoroutinesTest, ArchTest {
|
|||
coEvery { api.fetchConversations(any(), testUserId) } throws IOException("Api call failed")
|
||||
|
||||
// when
|
||||
conversationsRepository.getConversations(parameters, testUserId).test {
|
||||
// Then
|
||||
val actualLocalItems = expectItem() as DataResult.Success
|
||||
assertEquals(ResponseSource.Local, actualLocalItems.source)
|
||||
val expectedLocalConversations = listOf(
|
||||
Conversation(
|
||||
"conversationId234423",
|
||||
"subject28348",
|
||||
listOf(Correspondent("sender", "sender@pm.me")),
|
||||
listOf(Correspondent("recipient", "recipient@pm.ch")),
|
||||
3,
|
||||
1,
|
||||
4,
|
||||
0,
|
||||
listOf(LabelContext("labelId123", 1, 0, 0, 0, 0))
|
||||
)
|
||||
val result = conversationsRepository.getConversations(parameters, testUserId).take(3).toList()
|
||||
|
||||
// Then
|
||||
val actualLocalItems = result[0] as DataResult.Success
|
||||
assertEquals(ResponseSource.Local, actualLocalItems.source)
|
||||
val expectedLocalConversations = listOf(
|
||||
Conversation(
|
||||
"conversationId234423",
|
||||
"subject28348",
|
||||
listOf(Correspondent("sender", "sender@pm.me")),
|
||||
listOf(Correspondent("recipient", "recipient@pm.ch")),
|
||||
3,
|
||||
1,
|
||||
4,
|
||||
0,
|
||||
listOf(LabelContext("labelId123", 1, 0, 0, 0, 0))
|
||||
)
|
||||
assertEquals(expectedLocalConversations, actualLocalItems.value)
|
||||
)
|
||||
assertEquals(expectedLocalConversations, actualLocalItems.value)
|
||||
|
||||
val actualProcessingResult = expectItem() as DataResult.Processing
|
||||
assertEquals(ResponseSource.Remote, actualProcessingResult.source)
|
||||
val actualProcessingResult = result[1] as DataResult.Processing
|
||||
assertEquals(ResponseSource.Remote, actualProcessingResult.source)
|
||||
|
||||
val actualRemoteItems = expectItem() as DataResult.Error
|
||||
assertEquals(ResponseSource.Remote, actualRemoteItems.source)
|
||||
}
|
||||
val actualRemoteItems = result[2] as DataResult.Error
|
||||
assertEquals(ResponseSource.Remote, actualRemoteItems.source)
|
||||
}
|
||||
|
||||
private fun getConversation(
|
||||
|
|
|
@ -132,5 +132,4 @@ val DependencyHandler.`orchestrator` get() = androidx("test", module = "orchest
|
|||
val DependencyHandler.`browserstack-gradle-plugin` get() = dependency("gradle.plugin.com.browserstack.gradle", module = "browserstack-gradle-plugin") version `browserstack-plugin version`
|
||||
val DependencyHandler.`uiautomator` get() = androidx("test.uiautomator", module = "uiautomator") version `uiautomator version`
|
||||
val DependencyHandler.`android-activation` get() = dependency("com.sun.mail", module = "android-activation") version `sun-mail-android version`
|
||||
val DependencyHandler.`turbine` get() = dependency("app.cash.turbine", module = "turbine") version `turbine version`
|
||||
// endregion
|
||||
|
|
|
@ -97,7 +97,6 @@ const val `json-simple version` = "1.1.1" // Released: Mar
|
|||
const val `browserstack-plugin version` = "3.0.1" // Released: Jun 10, 2020
|
||||
const val `uiautomator version` = "2.2.0" // Released: Oct 25, 2018
|
||||
const val `sun-mail-android version` = "1.5.5" // Released: Mar 06, 2020
|
||||
const val `turbine version` = "0.4.1" //
|
||||
|
||||
// Android
|
||||
const val `android-biometric version` = "1.0.1" // Released: Jan 23, 2020
|
||||
|
|
Loading…
Reference in New Issue