chore: add test for domain inbox (#635)
This commit is contained in:
parent
fded58bcd1
commit
8998a04800
@ -11,6 +11,7 @@ import org.junit.Test
|
|||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
class DefaultApiConfigurationRepositoryTest {
|
class DefaultApiConfigurationRepositoryTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import org.junit.Test
|
|||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
class DefaultAuthRepositoryTest {
|
class DefaultAuthRepositoryTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import kotlin.test.assertEquals
|
|||||||
import kotlin.test.assertNull
|
import kotlin.test.assertNull
|
||||||
|
|
||||||
class DefaultIdentityRepositoryTest {
|
class DefaultIdentityRepositoryTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class DefaultDeleteAccountUseCaseTest {
|
class DefaultDeleteAccountUseCaseTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import org.junit.Test
|
|||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
class DefaultLoginUseCaseTest {
|
class DefaultLoginUseCaseTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class DefaultLogoutUseCaseTest {
|
class DefaultLogoutUseCaseTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ class DefaultLogoutUseCaseTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun givenNewAccount_whenExecute_thenInteractionsAreAsExpected() = runTest {
|
fun whenExecute_thenInteractionsAreAsExpected() = runTest {
|
||||||
val accountId = 1L
|
val accountId = 1L
|
||||||
coEvery {
|
coEvery {
|
||||||
accountRepository.getActive()
|
accountRepository.getActive()
|
||||||
|
@ -18,6 +18,7 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class DefaultSwitchAccountUseCaseTest {
|
class DefaultSwitchAccountUseCaseTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val dispatcherTestRule = DispatcherTestRule()
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
@ -38,9 +38,13 @@ kotlin {
|
|||||||
implementation(projects.domain.lemmy.repository)
|
implementation(projects.domain.lemmy.repository)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val commonTest by getting {
|
val androidUnitTest by getting {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(kotlin("test"))
|
implementation(libs.kotlinx.coroutines.test)
|
||||||
|
implementation(kotlin("test-junit"))
|
||||||
|
implementation(libs.mockk)
|
||||||
|
implementation(libs.turbine)
|
||||||
|
implementation(projects.core.testutils)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.github.diegoberaldin.raccoonforlemmy.domain.inbox
|
||||||
|
|
||||||
|
import app.cash.turbine.test
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.core.testutils.DispatcherTestRule
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.inbox.usecase.GetUnreadItemsUseCase
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertNotEquals
|
||||||
|
|
||||||
|
class DefaultInboxCoordinatorTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
private val identityRepository = mockk<IdentityRepository>(relaxUnitFun = true) {
|
||||||
|
every { isLogged } returns MutableStateFlow(true)
|
||||||
|
every { authToken } returns MutableStateFlow("fake-token")
|
||||||
|
}
|
||||||
|
private val getUnreadItemsUseCase = mockk<GetUnreadItemsUseCase>(relaxUnitFun = true) {
|
||||||
|
coEvery { getUnreadReplies() } returns 0
|
||||||
|
coEvery { getUnreadMentions() } returns 0
|
||||||
|
coEvery { getUnreadMessages() } returns 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private val sut = DefaultInboxCoordinator(
|
||||||
|
identityRepository = identityRepository,
|
||||||
|
getUnreadItemsUseCase = getUnreadItemsUseCase,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenSetUnreadOnly_thenValueIsUpdated() = runTest {
|
||||||
|
val resBefore = sut.unreadOnly.value
|
||||||
|
sut.setUnreadOnly(!resBefore)
|
||||||
|
|
||||||
|
val resAfter = sut.unreadOnly.value
|
||||||
|
assertNotEquals(resBefore, resAfter)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenSendEvent_thenValueIsUpdated() = runTest {
|
||||||
|
val evt = InboxCoordinator.Event.Refresh
|
||||||
|
launch {
|
||||||
|
sut.sendEvent(evt)
|
||||||
|
}
|
||||||
|
|
||||||
|
sut.events.test {
|
||||||
|
val item = awaitItem()
|
||||||
|
assertEquals(evt, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,75 @@
|
|||||||
|
package com.github.diegoberaldin.raccoonforlemmy.domain.inbox.usecase
|
||||||
|
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.core.testutils.DispatcherTestRule
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PrivateMessageModel
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PrivateMessageRepository
|
||||||
|
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.UserRepository
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.coVerify
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
class DefaultGetUnreadItemsUseCaseTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val dispatcherTestRule = DispatcherTestRule()
|
||||||
|
|
||||||
|
private val identityRepository = mockk<IdentityRepository>(relaxUnitFun = true) {
|
||||||
|
every { authToken } returns MutableStateFlow("fake-token")
|
||||||
|
}
|
||||||
|
private val userRepository = mockk<UserRepository>(relaxUnitFun = true)
|
||||||
|
private val messageRepository = mockk<PrivateMessageRepository>(relaxUnitFun = true)
|
||||||
|
|
||||||
|
private val sut = DefaultGetUnreadItemsUseCase(
|
||||||
|
identityRepository = identityRepository,
|
||||||
|
userRepository = userRepository,
|
||||||
|
messageRepository = messageRepository,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetUnreadReplies_thenResultIsAsExpected() = runTest {
|
||||||
|
coEvery { userRepository.getReplies(any(), any(), any()) } returns listOf(mockk())
|
||||||
|
|
||||||
|
val res = sut.getUnreadReplies()
|
||||||
|
|
||||||
|
assertEquals(1, res)
|
||||||
|
coVerify {
|
||||||
|
userRepository.getReplies(auth = "fake-token", page = 1, limit = any())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetUnreadMentions_thenResultIsAsExpected() = runTest {
|
||||||
|
coEvery { userRepository.getMentions(any(), any(), any()) } returns listOf(mockk())
|
||||||
|
|
||||||
|
val res = sut.getUnreadMentions()
|
||||||
|
|
||||||
|
assertEquals(1, res)
|
||||||
|
coVerify {
|
||||||
|
userRepository.getMentions(auth = "fake-token", page = 1, limit = any())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetUnreadMessages_thenResultIsAsExpected() = runTest {
|
||||||
|
val fakeMessage = mockk<PrivateMessageModel> {
|
||||||
|
every { creator } returns UserModel(id = 1)
|
||||||
|
every { recipient } returns UserModel(id = 2)
|
||||||
|
}
|
||||||
|
coEvery { messageRepository.getAll(any(), any(), any()) } returns listOf(fakeMessage)
|
||||||
|
|
||||||
|
val res = sut.getUnreadMessages()
|
||||||
|
|
||||||
|
assertEquals(1, res)
|
||||||
|
coVerify {
|
||||||
|
messageRepository.getAll(auth = "fake-token", page = 1, limit = any())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user