Improve FakeAppNavigationStateService
This commit is contained in:
parent
00fb4498f4
commit
a651a1cd6f
4 changed files with 29 additions and 27 deletions
|
|
@ -35,7 +35,6 @@ import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
|
||||||
import io.element.android.libraries.sessionstorage.test.observer.FakeSessionObserver
|
import io.element.android.libraries.sessionstorage.test.observer.FakeSessionObserver
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationState
|
import io.element.android.services.appnavstate.api.AppNavigationState
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||||
import io.element.android.services.appnavstate.api.NavigationState
|
|
||||||
import io.element.android.services.appnavstate.test.FakeAppNavigationStateService
|
import io.element.android.services.appnavstate.test.FakeAppNavigationStateService
|
||||||
import io.element.android.services.appnavstate.test.aNavigationState
|
import io.element.android.services.appnavstate.test.aNavigationState
|
||||||
import io.element.android.tests.testutils.lambda.any
|
import io.element.android.tests.testutils.lambda.any
|
||||||
|
|
@ -44,7 +43,6 @@ import io.element.android.tests.testutils.lambda.value
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
|
||||||
import kotlinx.coroutines.test.TestScope
|
import kotlinx.coroutines.test.TestScope
|
||||||
import kotlinx.coroutines.test.runCurrent
|
import kotlinx.coroutines.test.runCurrent
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
|
|
@ -92,26 +90,25 @@ class DefaultNotificationDrawerManagerTest {
|
||||||
@Test
|
@Test
|
||||||
fun `react to applicationStateChange`() = runTest {
|
fun `react to applicationStateChange`() = runTest {
|
||||||
// For now just call all the API. Later, add more valuable tests.
|
// For now just call all the API. Later, add more valuable tests.
|
||||||
val appNavigationStateFlow: MutableStateFlow<AppNavigationState> = MutableStateFlow(
|
val appNavigationStateService = FakeAppNavigationStateService()
|
||||||
AppNavigationState(
|
|
||||||
navigationState = NavigationState.Root,
|
|
||||||
isInForeground = true,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
val appNavigationStateService = FakeAppNavigationStateService(appNavigationState = appNavigationStateFlow)
|
|
||||||
createDefaultNotificationDrawerManager(
|
createDefaultNotificationDrawerManager(
|
||||||
appNavigationStateService = appNavigationStateService
|
appNavigationStateService = appNavigationStateService
|
||||||
)
|
)
|
||||||
appNavigationStateFlow.emit(AppNavigationState(aNavigationState(), isInForeground = true))
|
appNavigationStateService.emitNavigationState(AppNavigationState(aNavigationState(), isInForeground = true))
|
||||||
runCurrent()
|
runCurrent()
|
||||||
appNavigationStateFlow.emit(AppNavigationState(aNavigationState(A_SESSION_ID), isInForeground = true))
|
appNavigationStateService.emitNavigationState(AppNavigationState(aNavigationState(A_SESSION_ID), isInForeground = true))
|
||||||
runCurrent()
|
runCurrent()
|
||||||
appNavigationStateFlow.emit(AppNavigationState(aNavigationState(A_SESSION_ID, A_ROOM_ID), isInForeground = true))
|
appNavigationStateService.emitNavigationState(AppNavigationState(aNavigationState(A_SESSION_ID, A_ROOM_ID), isInForeground = true))
|
||||||
runCurrent()
|
runCurrent()
|
||||||
appNavigationStateFlow.emit(AppNavigationState(aNavigationState(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID), isInForeground = true))
|
appNavigationStateService.emitNavigationState(
|
||||||
|
AppNavigationState(
|
||||||
|
aNavigationState(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID),
|
||||||
|
isInForeground = true
|
||||||
|
)
|
||||||
|
)
|
||||||
runCurrent()
|
runCurrent()
|
||||||
// Like a user sign out
|
// Like a user sign out
|
||||||
appNavigationStateFlow.emit(AppNavigationState(aNavigationState(), isInForeground = true))
|
appNavigationStateService.emitNavigationState(AppNavigationState(aNavigationState(), isInForeground = true))
|
||||||
runCurrent()
|
runCurrent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,9 @@ class DefaultAnalyticsRoomListStateWatcherTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Opening the app in a cold state does nothing`() = runTest {
|
fun `Opening the app in a cold state does nothing`() = runTest {
|
||||||
val navigationStateService = FakeAppNavigationStateService().apply {
|
val navigationStateService = FakeAppNavigationStateService(
|
||||||
appNavigationState.emit(AppNavigationState(NavigationState.Root, false))
|
initialAppNavigationState = AppNavigationState(NavigationState.Root, false)
|
||||||
}
|
)
|
||||||
val roomListService = FakeRoomListService().apply {
|
val roomListService = FakeRoomListService().apply {
|
||||||
postState(RoomListService.State.Idle)
|
postState(RoomListService.State.Idle)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ import io.sentry.Sentry
|
||||||
import io.sentry.SentryTracer
|
import io.sentry.SentryTracer
|
||||||
import io.sentry.protocol.SentryId
|
import io.sentry.protocol.SentryId
|
||||||
import io.sentry.protocol.SentryTransaction
|
import io.sentry.protocol.SentryTransaction
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
|
@ -149,7 +148,7 @@ class SentryAnalyticsProviderTest {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
appNavigationStateService = FakeAppNavigationStateService(
|
appNavigationStateService = FakeAppNavigationStateService(
|
||||||
MutableStateFlow(AppNavigationState(navigationState = NavigationState.Session("owner", A_SESSION_ID), isInForeground = true))
|
initialAppNavigationState = AppNavigationState(navigationState = NavigationState.Session("owner", A_SESSION_ID), isInForeground = true)
|
||||||
)
|
)
|
||||||
).run {
|
).run {
|
||||||
init()
|
init()
|
||||||
|
|
@ -182,7 +181,7 @@ class SentryAnalyticsProviderTest {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
appNavigationStateService = FakeAppNavigationStateService(
|
appNavigationStateService = FakeAppNavigationStateService(
|
||||||
MutableStateFlow(AppNavigationState(navigationState = NavigationState.Root, isInForeground = true))
|
initialAppNavigationState = AppNavigationState(navigationState = NavigationState.Root, isInForeground = true)
|
||||||
)
|
)
|
||||||
).run {
|
).run {
|
||||||
init()
|
init()
|
||||||
|
|
@ -203,7 +202,7 @@ class SentryAnalyticsProviderTest {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
appNavigationStateService = FakeAppNavigationStateService(
|
appNavigationStateService = FakeAppNavigationStateService(
|
||||||
MutableStateFlow(AppNavigationState(navigationState = NavigationState.Session("owner", A_SESSION_ID), isInForeground = true))
|
initialAppNavigationState = AppNavigationState(navigationState = NavigationState.Session("owner", A_SESSION_ID), isInForeground = true)
|
||||||
)
|
)
|
||||||
).run {
|
).run {
|
||||||
init()
|
init()
|
||||||
|
|
@ -221,7 +220,7 @@ class SentryAnalyticsProviderTest {
|
||||||
buildMeta: BuildMeta = aBuildMeta(),
|
buildMeta: BuildMeta = aBuildMeta(),
|
||||||
getDatabaseSizesUseCase: GetDatabaseSizesUseCase = GetDatabaseSizesUseCase { Result.success(SdkStoreSizes(null, null, null, null)) },
|
getDatabaseSizesUseCase: GetDatabaseSizesUseCase = GetDatabaseSizesUseCase { Result.success(SdkStoreSizes(null, null, null, null)) },
|
||||||
appNavigationStateService: FakeAppNavigationStateService = FakeAppNavigationStateService(
|
appNavigationStateService: FakeAppNavigationStateService = FakeAppNavigationStateService(
|
||||||
MutableStateFlow(AppNavigationState(navigationState = NavigationState.Session("owner", A_SESSION_ID), isInForeground = true))
|
initialAppNavigationState = AppNavigationState(NavigationState.Session("owner", A_SESSION_ID), isInForeground = true)
|
||||||
)
|
)
|
||||||
) = SentryAnalyticsProvider(
|
) = SentryAnalyticsProvider(
|
||||||
context = InstrumentationRegistry.getInstrumentation().targetContext,
|
context = InstrumentationRegistry.getInstrumentation().targetContext,
|
||||||
|
|
|
||||||
|
|
@ -15,15 +15,21 @@ import io.element.android.services.appnavstate.api.AppNavigationState
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||||
import io.element.android.services.appnavstate.api.NavigationState
|
import io.element.android.services.appnavstate.api.NavigationState
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
|
||||||
class FakeAppNavigationStateService(
|
class FakeAppNavigationStateService(
|
||||||
override val appNavigationState: MutableStateFlow<AppNavigationState> = MutableStateFlow(
|
initialAppNavigationState: AppNavigationState = AppNavigationState(
|
||||||
AppNavigationState(
|
navigationState = NavigationState.Root,
|
||||||
navigationState = NavigationState.Root,
|
isInForeground = true,
|
||||||
isInForeground = true,
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
) : AppNavigationStateService {
|
) : AppNavigationStateService {
|
||||||
|
private val _appNavigationState: MutableStateFlow<AppNavigationState> = MutableStateFlow(initialAppNavigationState)
|
||||||
|
override val appNavigationState = _appNavigationState.asStateFlow()
|
||||||
|
|
||||||
|
fun emitNavigationState(state: AppNavigationState) {
|
||||||
|
_appNavigationState.value = state
|
||||||
|
}
|
||||||
|
|
||||||
override fun onNavigateToSession(owner: String, sessionId: SessionId) = Unit
|
override fun onNavigateToSession(owner: String, sessionId: SessionId) = Unit
|
||||||
override fun onLeavingSession(owner: String) = Unit
|
override fun onLeavingSession(owner: String) = Unit
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue