diff --git a/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogRobot.kt b/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogRobot.kt deleted file mode 100644 index c94f7b29b..000000000 --- a/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogRobot.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.samples.apps.nowinandroid.feature.settings - -import androidx.activity.ComponentActivity -import androidx.annotation.StringRes -import androidx.compose.ui.test.assertIsSelected -import androidx.compose.ui.test.junit4.AndroidComposeTestRule -import androidx.compose.ui.test.onNodeWithText -import androidx.test.ext.junit.rules.ActivityScenarioRule - -internal class SettingsDialogRobot( - private val composeTestRule: AndroidComposeTestRule, ComponentActivity> -) { - fun setContent(settingsUiState: SettingsUiState) { - composeTestRule.setContent { - SettingsDialog( - settingsUiState = settingsUiState, - onDismiss = { }, - onChangeThemeBrand = {}, - onChangeDarkThemeConfig = {} - ) - } - } - - fun loadingIndicatorExists() { - composeTestRule - .onNodeWithText(getString(R.string.loading)) - .assertExists() - } - - fun settingExists(name: String) { - composeTestRule - .onNodeWithText(name) - .assertExists() - } - - fun settingIsSelected(name: String) { - composeTestRule - .onNodeWithText(name) - .assertIsSelected() - } - - fun getString(@StringRes stringId: Int) = - composeTestRule.activity.resources.getString(stringId) -} \ No newline at end of file diff --git a/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt b/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt index bf1af77dc..07b6b272c 100644 --- a/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt +++ b/feature/settings/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt @@ -17,9 +17,9 @@ package com.google.samples.apps.nowinandroid.feature.settings import androidx.activity.ComponentActivity -import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import androidx.compose.ui.test.assertIsSelected import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.test.ext.junit.rules.ActivityScenarioRule +import androidx.compose.ui.test.onNodeWithText import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading @@ -32,60 +32,74 @@ class SettingsDialogTest { @get:Rule val composeTestRule = createAndroidComposeRule() + private fun getString(id: Int) = composeTestRule.activity.resources.getString(id) + @Test fun whenLoading_showsLoadingText() { - launchSettingsDialogRobot(composeTestRule, Loading) { - loadingIndicatorExists() + + composeTestRule.setContent { + SettingsDialog( + settingsUiState = Loading, + onDismiss = { }, + onChangeThemeBrand = {}, + onChangeDarkThemeConfig = {} + ) } + + composeTestRule + .onNodeWithText(getString(R.string.loading)) + .assertExists() } @Test fun whenStateIsSuccess_allSettingsAreDisplayed() { - launchSettingsDialogRobot( - composeTestRule, - Success( - UserEditableSettings( - brand = ANDROID, - darkThemeConfig = DARK - ) + composeTestRule.setContent { + SettingsDialog( + settingsUiState = Success( + UserEditableSettings( + brand = ANDROID, + darkThemeConfig = DARK + ) + ), + onDismiss = { }, + onChangeThemeBrand = {}, + onChangeDarkThemeConfig = {} ) - ) { - settingExists(getString(R.string.brand_default)) - settingExists(getString(R.string.brand_android)) - settingExists(getString(R.string.dark_mode_config_system_default)) + } - settingExists(getString(R.string.dark_mode_config_light)) - settingExists(getString(R.string.dark_mode_config_dark)) + // Check that all the possible settings are displayed. + composeTestRule.onNodeWithText(getString(R.string.brand_default)).assertExists() + composeTestRule.onNodeWithText(getString(R.string.brand_android)).assertExists() + composeTestRule.onNodeWithText( + getString(R.string.dark_mode_config_system_default) + ).assertExists() + composeTestRule.onNodeWithText(getString(R.string.dark_mode_config_light)).assertExists() + composeTestRule.onNodeWithText(getString(R.string.dark_mode_config_dark)).assertExists() - settingIsSelected(getString(R.string.brand_android)) - settingIsSelected(getString(R.string.dark_mode_config_dark)) - } + // Check that the correct settings are selected. + composeTestRule.onNodeWithText(getString(R.string.brand_android)).assertIsSelected() + composeTestRule.onNodeWithText(getString(R.string.dark_mode_config_dark)).assertIsSelected() } @Test fun whenStateIsSuccess_allLinksAreDisplayed() { - launchSettingsDialogRobot( - composeTestRule, - Success( - UserEditableSettings( - brand = ANDROID, - darkThemeConfig = DARK - ) + composeTestRule.setContent { + SettingsDialog( + settingsUiState = Success( + UserEditableSettings( + brand = ANDROID, + darkThemeConfig = DARK + ) + ), + onDismiss = { }, + onChangeThemeBrand = {}, + onChangeDarkThemeConfig = {} ) - ) { - settingExists(getString(R.string.privacy_policy)) - settingExists(getString(R.string.licenses)) - settingExists(getString(R.string.brand_guidelines)) - settingExists(getString(R.string.feedback)) } - } -} -private fun launchSettingsDialogRobot( - composeTestRule: AndroidComposeTestRule, ComponentActivity>, - settingsUiState: SettingsUiState, - func: SettingsDialogRobot.() -> Unit -) = SettingsDialogRobot(composeTestRule).apply { - setContent(settingsUiState) - func() + composeTestRule.onNodeWithText(getString(R.string.privacy_policy)).assertExists() + composeTestRule.onNodeWithText(getString(R.string.licenses)).assertExists() + composeTestRule.onNodeWithText(getString(R.string.brand_guidelines)).assertExists() + composeTestRule.onNodeWithText(getString(R.string.feedback)).assertExists() + } }