diff options
author | davidjiagoogle <125502967+davidjiagoogle@users.noreply.github.com> | 2024-04-29 11:23:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-29 11:23:13 -0700 |
commit | 45dd3cc187363fefc9f4d3552dd980fd839fed73 (patch) | |
tree | 29dc39a68b1cfc4c1407976e5dc9169ac55fb69d | |
parent | 9f2019261c270be70e65b612f732235aef174155 (diff) | |
download | jetpack-camera-app-45dd3cc187363fefc9f4d3552dd980fd839fed73.tar.gz |
Remove PreviewViewModel in app module for testing (#196)
* Remove PreviewViewModel in app module for testing
* Update UiTestUtil.kt
* Update UiTestUtil.kt
6 files changed, 11 insertions, 67 deletions
diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6f86f9b..fa31ee8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -139,8 +139,9 @@ dependencies { // Camera Preview implementation(project(":feature:preview")) - // Only needed as androidTestImplementation for now since we only need it for string resources + // Only needed as androidTestImplementation & testImplementation for now since we only need it for string resources androidTestImplementation(project(":feature:quicksettings")) + testImplementation(project(":feature:quicksettings")) // Settings Screen implementation(project(":feature:settings")) diff --git a/app/src/androidTest/java/com/google/jetpackcamera/FlashDeviceTest.kt b/app/src/androidTest/java/com/google/jetpackcamera/FlashDeviceTest.kt index e2db0a1..d7bc34a 100644 --- a/app/src/androidTest/java/com/google/jetpackcamera/FlashDeviceTest.kt +++ b/app/src/androidTest/java/com/google/jetpackcamera/FlashDeviceTest.kt @@ -33,7 +33,6 @@ import com.google.jetpackcamera.feature.preview.ui.IMAGE_CAPTURE_SUCCESS_TAG import com.google.jetpackcamera.feature.preview.ui.SCREEN_FLASH_OVERLAY import com.google.jetpackcamera.feature.quicksettings.ui.QUICK_SETTINGS_DROP_DOWN import com.google.jetpackcamera.feature.quicksettings.ui.QUICK_SETTINGS_FLASH_BUTTON -import com.google.jetpackcamera.settings.model.FlashMode import com.google.jetpackcamera.settings.model.LensFacing import org.junit.Before import org.junit.Rule @@ -74,14 +73,10 @@ internal class FlashDeviceTest { .assertExists() .performClick() - // Exit quick settings - composeTestRule.onNodeWithTag(QUICK_SETTINGS_DROP_DOWN) + composeTestRule.onNodeWithTag(QUICK_SETTINGS_FLASH_BUTTON) .assertExists() - .performClick() - - assert( - UiTestUtil.getPreviewCameraAppSettings(this@runScenarioTest).flashMode == - FlashMode.ON + composeTestRule.onNodeWithContentDescription( + com.google.jetpackcamera.quicksettings.R.string.quick_settings_flash_on_description ) } @@ -103,14 +98,8 @@ internal class FlashDeviceTest { .performClick() .performClick() - // Exit quick settings - composeTestRule.onNodeWithTag(QUICK_SETTINGS_DROP_DOWN) - .assertExists() - .performClick() - - assert( - UiTestUtil.getPreviewCameraAppSettings(this@runScenarioTest).flashMode == - FlashMode.AUTO + composeTestRule.onNodeWithContentDescription( + com.google.jetpackcamera.quicksettings.R.string.quick_settings_flash_auto_description ) } @@ -121,9 +110,8 @@ internal class FlashDeviceTest { composeTestRule.onNodeWithTag(CAPTURE_BUTTON).isDisplayed() } - assert( - UiTestUtil.getPreviewCameraAppSettings(this@runScenarioTest).flashMode == - FlashMode.OFF + composeTestRule.onNodeWithContentDescription( + com.google.jetpackcamera.quicksettings.R.string.quick_settings_flash_off_description ) // Navigate to quick settings @@ -138,14 +126,8 @@ internal class FlashDeviceTest { .performClick() .performClick() - // Exit quick settings - composeTestRule.onNodeWithTag(QUICK_SETTINGS_DROP_DOWN) - .assertExists() - .performClick() - - assert( - UiTestUtil.getPreviewCameraAppSettings(this@runScenarioTest).flashMode == - FlashMode.OFF + composeTestRule.onNodeWithContentDescription( + com.google.jetpackcamera.quicksettings.R.string.quick_settings_flash_off_description ) } diff --git a/app/src/androidTest/java/com/google/jetpackcamera/UiTestUtil.kt b/app/src/androidTest/java/com/google/jetpackcamera/UiTestUtil.kt index cae4241..d41cc04 100644 --- a/app/src/androidTest/java/com/google/jetpackcamera/UiTestUtil.kt +++ b/app/src/androidTest/java/com/google/jetpackcamera/UiTestUtil.kt @@ -22,39 +22,12 @@ import androidx.compose.ui.test.junit4.ComposeTestRule import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.performClick import androidx.test.core.app.ActivityScenario -import com.google.jetpackcamera.feature.preview.PreviewUiState import com.google.jetpackcamera.feature.quicksettings.ui.QUICK_SETTINGS_FLIP_CAMERA_BUTTON import com.google.jetpackcamera.quicksettings.R -import com.google.jetpackcamera.settings.model.CameraAppSettings import com.google.jetpackcamera.settings.model.LensFacing -import java.lang.IllegalStateException -import java.util.concurrent.atomic.AtomicReference const val APP_START_TIMEOUT_MILLIS = 10_000L const val IMAGE_CAPTURE_TIMEOUT_MILLIS = 5_000L -object UiTestUtil { - private fun getActivity(activityScenario: ActivityScenario<MainActivity>): MainActivity { - val activityRef: AtomicReference<MainActivity> = AtomicReference<MainActivity>() - activityScenario.onActivity(activityRef::set) - return activityRef.get() - } - - fun getPreviewCameraAppSettings( - activityScenario: ActivityScenario<MainActivity> - ): CameraAppSettings { - return getActivity( - activityScenario - ).previewViewModel!!.previewUiState.value.let { - when (it) { - is PreviewUiState.Ready -> it.currentCameraSettings - else -> throw IllegalStateException( - "Can only retrieve camera app settings from PreviewUiState.Ready," + - " but state was ${it::class}" - ) - } - } - } -} inline fun <reified T : Activity> runScenarioTest( crossinline block: ActivityScenario<T>.() -> Unit diff --git a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt index 79ef994..a8de5e8 100644 --- a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt +++ b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt @@ -27,7 +27,6 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.annotation.RequiresApi -import androidx.annotation.VisibleForTesting import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement @@ -74,9 +73,6 @@ private const val TAG = "MainActivity" class MainActivity : ComponentActivity() { private val viewModel: MainActivityViewModel by viewModels() - @VisibleForTesting - var previewViewModel: PreviewViewModel? = null - @OptIn(ExperimentalComposeUiApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -122,7 +118,6 @@ class MainActivity : ComponentActivity() { ) { JcaApp( previewMode = getPreviewMode(), - onPreviewViewModel = { previewViewModel = it }, onRequestWindowColorMode = { colorMode -> // Window color mode APIs require API level 26+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { diff --git a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt index bdef4e3..14aec76 100644 --- a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt +++ b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt @@ -29,7 +29,6 @@ import com.google.accompanist.permissions.rememberPermissionState import com.google.jetpackcamera.BuildConfig import com.google.jetpackcamera.feature.preview.PreviewMode import com.google.jetpackcamera.feature.preview.PreviewScreen -import com.google.jetpackcamera.feature.preview.PreviewViewModel import com.google.jetpackcamera.settings.SettingsScreen import com.google.jetpackcamera.settings.VersionInfoHolder import com.google.jetpackcamera.ui.Routes.PREVIEW_ROUTE @@ -40,7 +39,6 @@ import com.google.jetpackcamera.ui.Routes.SETTINGS_ROUTE fun JcaApp( /*TODO(b/306236646): remove after still capture*/ previewMode: PreviewMode, - onPreviewViewModel: (PreviewViewModel) -> Unit, onRequestWindowColorMode: (Int) -> Unit, modifier: Modifier = Modifier ) { @@ -49,7 +47,6 @@ fun JcaApp( if (permissionState.status.isGranted) { JetpackCameraNavHost( - onPreviewViewModel = onPreviewViewModel, previewMode = previewMode, onRequestWindowColorMode = onRequestWindowColorMode, modifier = modifier @@ -65,7 +62,6 @@ fun JcaApp( @Composable private fun JetpackCameraNavHost( previewMode: PreviewMode, - onPreviewViewModel: (PreviewViewModel) -> Unit, onRequestWindowColorMode: (Int) -> Unit, modifier: Modifier = Modifier, navController: NavHostController = rememberNavController() @@ -73,7 +69,6 @@ private fun JetpackCameraNavHost( NavHost(navController = navController, startDestination = PREVIEW_ROUTE, modifier = modifier) { composable(PREVIEW_ROUTE) { PreviewScreen( - onPreviewViewModel = onPreviewViewModel, onNavigateToSettings = { navController.navigate(SETTINGS_ROUTE) }, onRequestWindowColorMode = onRequestWindowColorMode, previewMode = previewMode diff --git a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt index 0ad38f4..e0ff42c 100644 --- a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt +++ b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt @@ -70,7 +70,6 @@ private const val TAG = "PreviewScreen" */ @Composable fun PreviewScreen( - onPreviewViewModel: (PreviewViewModel) -> Unit, onNavigateToSettings: () -> Unit, previewMode: PreviewMode, modifier: Modifier = Modifier, @@ -78,7 +77,6 @@ fun PreviewScreen( viewModel: PreviewViewModel = hiltViewModel() ) { Log.d(TAG, "PreviewScreen") - onPreviewViewModel(viewModel) val previewUiState: PreviewUiState by viewModel.previewUiState.collectAsState() |