Update authenticator compose tests to allow for easier use of local compositions (#5228)

This commit is contained in:
David Perez 2025-05-20 12:01:23 -05:00 committed by GitHub
parent 3d152f5c36
commit 34aed2ac65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 37 additions and 14 deletions

View File

@ -25,13 +25,17 @@ import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsMa
@Composable
fun LocalManagerProvider(
activity: Activity = requireNotNull(LocalActivity.current),
permissionsManager: PermissionsManager = PermissionsManagerImpl(activity),
intentManager: IntentManager = IntentManagerImpl(activity),
exitManager: ExitManager = ExitManagerImpl(activity),
biometricsManager: BiometricsManager = BiometricsManagerImpl(activity),
content: @Composable () -> Unit,
) {
CompositionLocalProvider(
LocalPermissionsManager provides PermissionsManagerImpl(activity),
LocalIntentManager provides IntentManagerImpl(activity),
LocalExitManager provides ExitManagerImpl(activity),
LocalBiometricsManager provides BiometricsManagerImpl(activity),
LocalPermissionsManager provides permissionsManager,
LocalIntentManager provides intentManager,
LocalExitManager provides exitManager,
LocalBiometricsManager provides biometricsManager,
content = content,
)
}

View File

@ -49,11 +49,12 @@ class ItemListingScreenTest : AuthenticatorComposeTest() {
@Before
fun setup() {
setContent {
setContent(
intentManager = intentManager,
permissionsManager = permissionsManager,
) {
ItemListingScreen(
viewModel = viewModel,
intentManager = intentManager,
permissionsManager = permissionsManager,
onNavigateBack = { onNavigateBackCalled = true },
onNavigateToSearch = { onNavigateToSearchCalled = true },
onNavigateToQrCodeScanner = { onNavigateToQrCodeScannerCalled = true },

View File

@ -33,13 +33,14 @@ class ManualCodeEntryScreenTest : AuthenticatorComposeTest() {
@Before
fun setup() {
setContent {
setContent(
intentManager = intentManager,
permissionsManager = permissionsManager,
) {
ManualCodeEntryScreen(
onNavigateBack = {},
onNavigateToQrCodeScreen = {},
viewModel = viewModel,
intentManager = intentManager,
permissionsManager = permissionsManager,
)
}
}

View File

@ -2,9 +2,14 @@ package com.bitwarden.authenticator.ui.platform.base
import androidx.compose.runtime.Composable
import com.bitwarden.authenticator.ui.platform.composition.LocalManagerProvider
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager
import com.bitwarden.authenticator.ui.platform.manager.exit.ExitManager
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
import com.bitwarden.ui.platform.base.BaseComposeTest
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
import io.mockk.mockk
/**
* A base class that can be used for performing Compose-layer testing using Robolectric, Compose
@ -16,13 +21,24 @@ abstract class AuthenticatorComposeTest : BaseComposeTest() {
* Helper for testing a basic Composable function that only requires a Composable environment
* with the [AuthenticatorTheme].
*/
@Suppress("LongParameterList")
protected fun setContent(
theme: AppTheme = AppTheme.DEFAULT,
permissionsManager: PermissionsManager = mockk(),
intentManager: IntentManager = mockk(),
exitManager: ExitManager = mockk(),
biometricsManager: BiometricsManager = mockk(),
test: @Composable () -> Unit,
) {
setTestContent {
AuthenticatorTheme(theme = theme) {
LocalManagerProvider { test() }
LocalManagerProvider(
permissionsManager = permissionsManager,
intentManager = intentManager,
exitManager = exitManager,
biometricsManager = biometricsManager,
content = test,
)
}
}
}

View File

@ -56,11 +56,12 @@ class SettingsScreenTest : AuthenticatorComposeTest() {
@Before
fun setup() {
setContent {
setContent(
biometricsManager = biometricsManager,
intentManager = intentManager,
) {
SettingsScreen(
viewModel = viewModel,
biometricsManager = biometricsManager,
intentManager = intentManager,
onNavigateToTutorial = { onNavigateToTutorialCalled = true },
onNavigateToExport = { onNaviateToExportCalled = true },
onNavigateToImport = { onNavigateToImportCalled = true },