Test cleanup
This commit is contained in:
@@ -10,23 +10,23 @@
|
||||
|
||||
package io.element.android.libraries.permissions.impl
|
||||
|
||||
import app.cash.molecule.RecompositionMode
|
||||
import app.cash.molecule.moleculeFlow
|
||||
import app.cash.turbine.test
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
import com.google.accompanist.permissions.PermissionStatus
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.libraries.permissions.api.PermissionsEvents
|
||||
import io.element.android.libraries.permissions.api.PermissionsStore
|
||||
import io.element.android.libraries.permissions.impl.action.FakePermissionActions
|
||||
import io.element.android.libraries.permissions.impl.action.PermissionActions
|
||||
import io.element.android.libraries.permissions.test.InMemoryPermissionsStore
|
||||
import io.element.android.tests.testutils.WarmUpRule
|
||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||
import io.element.android.tests.testutils.lambda.value
|
||||
import io.element.android.tests.testutils.test
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
const val A_PERMISSION = "A_PERMISSION"
|
||||
private const val A_PERMISSION = "A_PERMISSION"
|
||||
|
||||
class DefaultPermissionsPresenterTest {
|
||||
@get:Rule
|
||||
@@ -34,24 +34,8 @@ class DefaultPermissionsPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - initial state`() = runTest {
|
||||
val permissionsStore = InMemoryPermissionsStore()
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Granted
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val presenter = createPresenter()
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.permission).isEqualTo(A_PERMISSION)
|
||||
assertThat(initialState.permissionGranted).isTrue()
|
||||
@@ -68,23 +52,16 @@ class DefaultPermissionsPresenterTest {
|
||||
permissionDenied = true,
|
||||
permissionAsked = true
|
||||
)
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = false)
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = false)
|
||||
),
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
val presenter = createPresenter(
|
||||
permissionsStore = permissionsStore,
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
presenter.test {
|
||||
skipItems(1)
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -101,27 +78,21 @@ class DefaultPermissionsPresenterTest {
|
||||
permissionDenied = true,
|
||||
permissionAsked = true
|
||||
)
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = false)
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = false),
|
||||
),
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val openSettingsAction = lambdaRecorder<String, Unit> { }
|
||||
val permissionActions = FakePermissionActions(
|
||||
openSettingsAction = openSettingsAction,
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
permissionActions,
|
||||
val presenter = createPresenter(
|
||||
permissionsStore = permissionsStore,
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
permissionActions = permissionActions,
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
presenter.test {
|
||||
skipItems(1)
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -136,24 +107,16 @@ class DefaultPermissionsPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - user does not grant permission`() = runTest {
|
||||
val permissionsStore = InMemoryPermissionsStore()
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = false)
|
||||
val permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = false)
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = permissionState,
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val presenter = createPresenter(
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.showDialog).isFalse()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -171,24 +134,16 @@ class DefaultPermissionsPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - user does not grant permission second time`() = runTest {
|
||||
val permissionsStore = InMemoryPermissionsStore()
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = true)
|
||||
val permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = true)
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = permissionState,
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val presenter = createPresenter(
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.showDialog).isFalse()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -206,28 +161,21 @@ class DefaultPermissionsPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - user does not grant permission third time`() = runTest {
|
||||
val permissionsStore =
|
||||
InMemoryPermissionsStore(
|
||||
permissionDenied = true,
|
||||
permissionAsked = true
|
||||
)
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = false)
|
||||
val permissionsStore = InMemoryPermissionsStore(
|
||||
permissionDenied = true,
|
||||
permissionAsked = true,
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
val permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = false),
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = permissionState,
|
||||
)
|
||||
val presenter = createPresenter(
|
||||
permissionsStore = permissionsStore,
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
)
|
||||
presenter.test {
|
||||
skipItems(1)
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -241,24 +189,16 @@ class DefaultPermissionsPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - user grants permission`() = runTest {
|
||||
val permissionsStore = InMemoryPermissionsStore()
|
||||
val permissionState = FakePermissionState(
|
||||
A_PERMISSION,
|
||||
PermissionStatus.Denied(shouldShowRationale = false)
|
||||
val permissionState = aFakePermissionState(
|
||||
initialStatus = PermissionStatus.Denied(shouldShowRationale = false)
|
||||
)
|
||||
val permissionStateProvider =
|
||||
FakeComposablePermissionStateProvider(
|
||||
permissionState
|
||||
)
|
||||
val presenter = DefaultPermissionsPresenter(
|
||||
A_PERMISSION,
|
||||
permissionsStore,
|
||||
permissionStateProvider,
|
||||
FakePermissionActions(),
|
||||
val permissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = permissionState,
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val presenter = createPresenter(
|
||||
permissionStateProvider = permissionStateProvider,
|
||||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.showDialog).isFalse()
|
||||
initialState.eventSink.invoke(PermissionsEvents.RequestPermissions)
|
||||
@@ -274,3 +214,26 @@ class DefaultPermissionsPresenterTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createPresenter(
|
||||
permission: String = A_PERMISSION,
|
||||
permissionsStore: PermissionsStore = InMemoryPermissionsStore(),
|
||||
permissionStateProvider: ComposablePermissionStateProvider = FakeComposablePermissionStateProvider(
|
||||
permissionState = aFakePermissionState(),
|
||||
),
|
||||
permissionActions: PermissionActions = FakePermissionActions(),
|
||||
) = DefaultPermissionsPresenter(
|
||||
permission = permission,
|
||||
permissionsStore = permissionsStore,
|
||||
composablePermissionStateProvider = permissionStateProvider,
|
||||
permissionActions = permissionActions,
|
||||
)
|
||||
|
||||
private fun aFakePermissionState(
|
||||
permission: String = A_PERMISSION,
|
||||
initialStatus: PermissionStatus = PermissionStatus.Granted,
|
||||
) = FakePermissionState(
|
||||
permission = permission,
|
||||
initialStatus = initialStatus,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user