From 90c2fcb2552a01ddc6be191a7bf692d90b213d5c Mon Sep 17 00:00:00 2001 From: Honza Rychnovsky Date: Tue, 14 Jun 2022 08:50:55 +0200 Subject: [PATCH] [#209] Compose dependency update * [#209] Update Compose dependency to latest version 1.2.0-beta03 - Update dependency - Align our integration tests with the new Compose requirements - Add integration folder to tests, if missing - Split integration tests, which require activity to separate classes - Remove unnecessary custom activity for each integration app part and create one custom common activity - Implement Downloadable fonts from Compose 1.2 - Update Third party licenses documentation --- docs/Third party licenses.md | 2 +- gradle.properties | 2 +- settings.gradle.kts | 2 + .../zcash/ui/design/compat/FontCompat.kt | 32 ---------- .../ui/design/theme/internal/Typography.kt | 39 ++++++++---- .../main/res/ui/common/font/rubik_medium.ttf | Bin 124176 -> 0 bytes .../main/res/ui/common/font/rubik_regular.ttf | Bin 124236 -> 0 bytes .../main/res/ui/common/values/font_certs.xml | 32 ++++++++++ .../src/androidTest/AndroidManifest.xml | 2 +- .../integration/test/{ => common}/Global.kt | 0 .../test/common/IntegrationTestingActivity.kt | 5 ++ .../test/screen/scan/TestScanActivity.kt | 37 ----------- .../scan/view/ScanViewIntegrationTest.kt | 4 +- .../test/screen/scan/view/ScanViewTest.kt | 4 +- ui-lib/src/androidTest/AndroidManifest.xml | 8 +-- .../zcash/ui/common/UiTestingActivity.kt | 5 ++ .../ui/screen/backup/TestBackupActivity.kt | 40 ------------ .../backup/integration/BackupActivityTest.kt | 51 +++++++++++++++ .../BackupIntegrationTest.kt | 30 ++------- .../onboarding/TestOnboardingActivity.kt | 55 ---------------- .../integration/OnboardingActivityTest.kt | 44 +++++++++++++ .../OnboardingIntegrationTest.kt | 29 ++------- .../ui/screen/update/TestUpdateActivity.kt | 36 ----------- .../integration/UpdateViewActivityTest.kt | 59 ++++++++++++++++++ .../update/integration/UpdateViewModelTest.kt | 4 +- .../update/view/AppUpdateCheckerImpTest.kt | 6 +- .../ui/screen/update/view/UpdateViewTest.kt | 27 +------- .../co/electriccoin/zcash/ui/MainActivity.kt | 11 +--- 28 files changed, 251 insertions(+), 315 deletions(-) delete mode 100644 ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/compat/FontCompat.kt delete mode 100644 ui-design-lib/src/main/res/ui/common/font/rubik_medium.ttf delete mode 100644 ui-design-lib/src/main/res/ui/common/font/rubik_regular.ttf create mode 100644 ui-design-lib/src/main/res/ui/common/values/font_certs.xml rename ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/{ => common}/Global.kt (100%) create mode 100644 ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/IntegrationTestingActivity.kt delete mode 100644 ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/TestScanActivity.kt create mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/UiTestingActivity.kt delete mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/TestBackupActivity.kt create mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupActivityTest.kt rename ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/{view => integration}/BackupIntegrationTest.kt (79%) delete mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/TestOnboardingActivity.kt create mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingActivityTest.kt rename ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/{view => integration}/OnboardingIntegrationTest.kt (66%) delete mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/TestUpdateActivity.kt create mode 100644 ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewActivityTest.kt diff --git a/docs/Third party licenses.md b/docs/Third party licenses.md index 41839c0e..e2d3f1ed 100644 --- a/docs/Third party licenses.md +++ b/docs/Third party licenses.md @@ -6,4 +6,4 @@ The majority of the contents of this Git repository are covered under the [LICEN ## Rubik Font -The fonts under the [font](../ui-lib/src/main/res/ui/common/font) directory are downloaded from [Google Fonts](https://fonts.google.com/specimen/Rubik) and are licensed under the [Open Font License](https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). +We use fonts from Rubik font family. The fonts are downloaded from [Google Fonts](https://fonts.google.com/specimen/Rubik) and are licensed under the [Open Font License](https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). diff --git a/gradle.properties b/gradle.properties index b6551c44..99175946 100644 --- a/gradle.properties +++ b/gradle.properties @@ -94,7 +94,7 @@ ANDROIDX_APPCOMPAT_VERSION=1.4.1 ANDROIDX_CAMERA_VERSION=1.1.0-rc01 ANDROIDX_COMPOSE_COMPILER_VERSION=1.2.0-beta03 ANDROIDX_COMPOSE_MATERIAL3_VERSION=1.0.0-alpha13 -ANDROIDX_COMPOSE_VERSION=1.1.1 +ANDROIDX_COMPOSE_VERSION=1.2.0-beta03 ANDROIDX_CONSTRAINTLAYOUT_VERSION=1.0.0 ANDROIDX_CORE_VERSION=1.7.0 ANDROIDX_ESPRESSO_VERSION=3.5.0-alpha07 diff --git a/settings.gradle.kts b/settings.gradle.kts index 3dd35ffb..988cd178 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -164,6 +164,7 @@ dependencyResolutionManagement { library("androidx-compose-material-icons-extended", "androidx.compose.material:material-icons-extended:$androidxComposeVersion") library("androidx-compose-tooling", "androidx.compose.ui:ui-tooling:$androidxComposeVersion") library("androidx-compose-ui", "androidx.compose.ui:ui:$androidxComposeVersion") + library("androidx-compose-ui-fonts", "androidx.compose.ui:ui-text-google-fonts:$androidxComposeVersion") library("androidx-compose-compiler", "androidx.compose.compiler:compiler:$androidxComposeCompilerVersion") library("androidx-core", "androidx.core:core-ktx:$androidxCoreVersion") library("androidx-constraintlayout", "androidx.constraintlayout:constraintlayout-compose:$androidxConstraintlayoutVersion") @@ -219,6 +220,7 @@ dependencyResolutionManagement { "androidx-compose-material3", "androidx-compose-tooling", "androidx-compose-ui", + "androidx-compose-ui-fonts" ) ) bundle( diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/compat/FontCompat.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/compat/FontCompat.kt deleted file mode 100644 index e2c2c860..00000000 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/compat/FontCompat.kt +++ /dev/null @@ -1,32 +0,0 @@ -package co.electriccoin.zcash.ui.design.compat - -import android.content.Context -import androidx.annotation.FontRes -import androidx.core.content.res.ResourcesCompat -import co.electriccoin.zcash.spackle.AndroidApiVersion -import co.electriccoin.zcash.ui.design.R -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext - -object FontCompat { - fun isFontPrefetchNeeded() = !AndroidApiVersion.isAtLeastO - - suspend fun prefetchFontsLegacy(context: Context) { - prefetchFontLegacy(context, R.font.rubik_medium) - prefetchFontLegacy(context, R.font.rubik_regular) - } - - /** - * Pre-fetches fonts on Android N (API 25) and below. - */ - /* - * ResourcesCompat is used implicitly by Compose on older Android versions. - * The backwards compatibility library performs disk IO and then - * caches the results. This moves that IO off the main thread, to prevent ANRs and - * jank during app startup. - */ - private suspend fun prefetchFontLegacy(context: Context, @FontRes fontRes: Int) = - withContext(Dispatchers.IO) { - ResourcesCompat.getFont(context, fontRes) - } -} diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/theme/internal/Typography.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/theme/internal/Typography.kt index 05efd0f8..cd33c3d1 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/theme/internal/Typography.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/theme/internal/Typography.kt @@ -3,39 +3,56 @@ package co.electriccoin.zcash.ui.design.theme.internal import androidx.compose.material3.Typography import androidx.compose.runtime.Immutable import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.googlefonts.Font +import androidx.compose.ui.text.googlefonts.GoogleFont import androidx.compose.ui.text.style.BaselineShift -import androidx.compose.ui.unit.ExperimentalUnitApi import androidx.compose.ui.unit.sp import co.electriccoin.zcash.ui.design.R -private val Rubik = FontFamily( - Font(R.font.rubik_regular, FontWeight.W400), - Font(R.font.rubik_medium, FontWeight.W500) +@OptIn(ExperimentalTextApi::class) +private val provider = GoogleFont.Provider( + providerAuthority = "com.google.android.gms.fonts", + providerPackage = "com.google.android.gms", + certificates = R.array.com_google_android_gms_fonts_certs ) -@OptIn(ExperimentalUnitApi::class) +// We use bestEffort here to be able to get the closest font weight, if accidentally use +// an unspecified font weight and not the default one. +@OptIn(ExperimentalTextApi::class) +private val RubikFont = GoogleFont(name = "Rubik", bestEffort = true) + +@OptIn(ExperimentalTextApi::class) +private val RubikFontFamily = FontFamily( + Font(googleFont = RubikFont, fontProvider = provider, weight = FontWeight.Normal), // W400 + Font(googleFont = RubikFont, fontProvider = provider, weight = FontWeight.Medium), // W500 + Font(googleFont = RubikFont, fontProvider = provider, weight = FontWeight.SemiBold), // W600 + Font(googleFont = RubikFont, fontProvider = provider, weight = FontWeight.Bold) // W700 +) + +// If you change this definition of our Typography, don't forget to check if you use only +// the defined font weights above, otherwise the closest one will be used. internal val Typography = Typography( headlineLarge = TextStyle( - fontFamily = Rubik, - fontWeight = FontWeight.W600, + fontFamily = RubikFontFamily, + fontWeight = FontWeight.SemiBold, fontSize = 30.sp, ), bodyLarge = TextStyle( - fontFamily = Rubik, + fontFamily = RubikFontFamily, fontWeight = FontWeight.Normal, fontSize = 16.sp ), bodySmall = TextStyle( - fontFamily = Rubik, + fontFamily = RubikFontFamily, fontWeight = FontWeight.Medium, fontSize = 16.sp ), labelLarge = TextStyle( - fontFamily = Rubik, + fontFamily = RubikFontFamily, fontWeight = FontWeight.Normal, fontSize = 16.sp ), diff --git a/ui-design-lib/src/main/res/ui/common/font/rubik_medium.ttf b/ui-design-lib/src/main/res/ui/common/font/rubik_medium.ttf deleted file mode 100644 index a4008b72436eb3a6bcbbcd59abc3921cf2f1258b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124176 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 Xmb?^e5haK*X$h%bSfz5l%Xfetm*RZps?o>X-N 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 GqW=qsOG%gj diff --git a/ui-design-lib/src/main/res/ui/common/values/font_certs.xml b/ui-design-lib/src/main/res/ui/common/values/font_certs.xml new file mode 100644 index 00000000..5ece3f5f --- /dev/null +++ b/ui-design-lib/src/main/res/ui/common/values/font_certs.xml @@ -0,0 +1,32 @@ + + + + + @array/com_google_android_gms_fonts_certs_dev + @array/com_google_android_gms_fonts_certs_prod + + + + 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 + + + \ No newline at end of file diff --git a/ui-integration-test-lib/src/androidTest/AndroidManifest.xml b/ui-integration-test-lib/src/androidTest/AndroidManifest.xml index e0e30c38..4b646e3c 100644 --- a/ui-integration-test-lib/src/androidTest/AndroidManifest.xml +++ b/ui-integration-test-lib/src/androidTest/AndroidManifest.xml @@ -6,7 +6,7 @@ diff --git a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/Global.kt b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/Global.kt similarity index 100% rename from ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/Global.kt rename to ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/Global.kt diff --git a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/IntegrationTestingActivity.kt b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/IntegrationTestingActivity.kt new file mode 100644 index 00000000..6d6d6c7d --- /dev/null +++ b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/common/IntegrationTestingActivity.kt @@ -0,0 +1,5 @@ +package co.electriccoin.zcash.ui.integration.test.common + +import androidx.activity.ComponentActivity + +class IntegrationTestingActivity : ComponentActivity() diff --git a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/TestScanActivity.kt b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/TestScanActivity.kt deleted file mode 100644 index 1ab44310..00000000 --- a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/TestScanActivity.kt +++ /dev/null @@ -1,37 +0,0 @@ -package co.electriccoin.zcash.ui.integration.test.screen.scan - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.ui.Modifier -import co.electriccoin.zcash.ui.design.component.GradientSurface -import co.electriccoin.zcash.ui.design.theme.ZcashTheme -import co.electriccoin.zcash.ui.screen.scan.WrapScan - -class TestScanActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setupUiContent() - } - - private fun setupUiContent() { - setContent { - ZcashTheme { - GradientSurface( - Modifier - .fillMaxWidth() - .fillMaxHeight() - ) { - WrapScan( - this, - goBack = {}, - onScanned = {}, - ) - } - } - } - } -} diff --git a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewIntegrationTest.kt b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewIntegrationTest.kt index 2659f682..0e4625df 100644 --- a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewIntegrationTest.kt +++ b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewIntegrationTest.kt @@ -6,8 +6,8 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithTag import androidx.test.filters.LargeTest import co.electriccoin.zcash.test.UiTestPrerequisites +import co.electriccoin.zcash.ui.integration.test.common.IntegrationTestingActivity import co.electriccoin.zcash.ui.integration.test.getPermissionPositiveButtonUiObject -import co.electriccoin.zcash.ui.integration.test.screen.scan.TestScanActivity import co.electriccoin.zcash.ui.screen.scan.ScanTag import co.electriccoin.zcash.ui.screen.scan.model.ScanState import org.junit.Assert @@ -19,7 +19,7 @@ import org.junit.Test class ScanViewIntegrationTest : UiTestPrerequisites() { @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createAndroidComposeRule() private lateinit var testSetup: ScanViewTestSetup diff --git a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt index 5ddeb8a4..e00c0737 100644 --- a/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt +++ b/ui-integration-test-lib/src/androidTest/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt @@ -11,9 +11,9 @@ import androidx.compose.ui.test.performClick import androidx.test.filters.LargeTest import co.electriccoin.zcash.test.UiTestPrerequisites import co.electriccoin.zcash.ui.R +import co.electriccoin.zcash.ui.integration.test.common.IntegrationTestingActivity import co.electriccoin.zcash.ui.integration.test.getPermissionPositiveButtonUiObject import co.electriccoin.zcash.ui.integration.test.getStringResource -import co.electriccoin.zcash.ui.integration.test.screen.scan.TestScanActivity import co.electriccoin.zcash.ui.integration.test.waitForDeviceIdle import co.electriccoin.zcash.ui.screen.scan.ScanTag import co.electriccoin.zcash.ui.screen.scan.model.ScanState @@ -28,7 +28,7 @@ import kotlin.time.Duration.Companion.milliseconds class ScanViewTest : UiTestPrerequisites() { @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createAndroidComposeRule() private lateinit var testSetup: ScanViewTestSetup diff --git a/ui-lib/src/androidTest/AndroidManifest.xml b/ui-lib/src/androidTest/AndroidManifest.xml index 5d05abc0..f9a4adfb 100644 --- a/ui-lib/src/androidTest/AndroidManifest.xml +++ b/ui-lib/src/androidTest/AndroidManifest.xml @@ -6,13 +6,7 @@ - - diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/UiTestingActivity.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/UiTestingActivity.kt new file mode 100644 index 00000000..bcc2dafb --- /dev/null +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/UiTestingActivity.kt @@ -0,0 +1,5 @@ +package co.electriccoin.zcash.ui.common + +import androidx.activity.ComponentActivity + +class UiTestingActivity : ComponentActivity() diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/TestBackupActivity.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/TestBackupActivity.kt deleted file mode 100644 index 0e8c37ae..00000000 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/TestBackupActivity.kt +++ /dev/null @@ -1,40 +0,0 @@ -package co.electriccoin.zcash.ui.screen.backup - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.ui.Modifier -import cash.z.ecc.sdk.fixture.PersistableWalletFixture -import co.electriccoin.zcash.ui.design.component.GradientSurface -import co.electriccoin.zcash.ui.design.theme.ZcashTheme -import co.electriccoin.zcash.ui.screen.backup.model.BackupStage -import co.electriccoin.zcash.ui.screen.backup.state.BackupState - -class TestBackupActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setupUiContent() - } - - private fun setupUiContent() { - setContent { - ZcashTheme { - GradientSurface( - Modifier - .fillMaxWidth() - .fillMaxHeight() - ) { - WrapBackup( - persistableWallet = PersistableWalletFixture.new(), - backupState = BackupState(BackupStage.EducationOverview), - onCopyToClipboard = {}, - onBackupComplete = {} - ) - } - } - } - } -} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupActivityTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupActivityTest.kt new file mode 100644 index 00000000..c5dcd26e --- /dev/null +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupActivityTest.kt @@ -0,0 +1,51 @@ +package co.electriccoin.zcash.ui.screen.backup.integration + +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.test.filters.MediumTest +import co.electriccoin.zcash.test.UiTestPrerequisites +import co.electriccoin.zcash.ui.R +import co.electriccoin.zcash.ui.common.UiTestingActivity +import co.electriccoin.zcash.ui.fixture.TestChoicesFixture +import co.electriccoin.zcash.ui.screen.backup.model.BackupStage +import co.electriccoin.zcash.ui.screen.backup.view.BackupTestSetup +import co.electriccoin.zcash.ui.test.getStringResource +import org.junit.Assert.assertEquals +import org.junit.Rule +import org.junit.Test + +class BackupActivityTest : UiTestPrerequisites() { + + @get:Rule + val composeTestRule = createAndroidComposeRule() + + private fun newTestSetup(): BackupTestSetup { + return BackupTestSetup( + composeTestRule, + BackupStage.EducationOverview, + TestChoicesFixture.new(TestChoicesFixture.INITIAL_CHOICES) + ) + } + + @Test + @MediumTest + fun current_stage_restoration_activity() { + val testSetup = newTestSetup() + testSetup.setDefaultContent() + + assertEquals(BackupStage.EducationOverview, testSetup.getStage()) + + composeTestRule.onNodeWithText(getStringResource(R.string.new_wallet_1_button)).also { + it.performClick() + } + + assertEquals(BackupStage.EducationRecoveryPhrase, testSetup.getStage()) + + composeTestRule.activityRule.scenario.onActivity { + it.recreate() + } + + assertEquals(BackupStage.EducationRecoveryPhrase, testSetup.getStage()) + } +} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/view/BackupIntegrationTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupIntegrationTest.kt similarity index 79% rename from ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/view/BackupIntegrationTest.kt rename to ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupIntegrationTest.kt index abf96945..07314a7c 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/view/BackupIntegrationTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/backup/integration/BackupIntegrationTest.kt @@ -1,8 +1,8 @@ -package co.electriccoin.zcash.ui.screen.backup.view +package co.electriccoin.zcash.ui.screen.backup.integration import androidx.compose.ui.test.hasTestTag import androidx.compose.ui.test.junit4.StateRestorationTester -import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onAllNodesWithTag import androidx.compose.ui.test.onChildren import androidx.compose.ui.test.onNodeWithText @@ -12,16 +12,17 @@ import co.electriccoin.zcash.test.UiTestPrerequisites import co.electriccoin.zcash.ui.R import co.electriccoin.zcash.ui.fixture.TestChoicesFixture import co.electriccoin.zcash.ui.screen.backup.BackupTag -import co.electriccoin.zcash.ui.screen.backup.TestBackupActivity import co.electriccoin.zcash.ui.screen.backup.model.BackupStage +import co.electriccoin.zcash.ui.screen.backup.view.BackupTestSetup import co.electriccoin.zcash.ui.test.getStringResource import org.junit.Assert.assertEquals import org.junit.Rule import org.junit.Test class BackupIntegrationTest : UiTestPrerequisites() { + @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createComposeRule() private fun newTestSetup(initialStage: BackupStage): BackupTestSetup { return BackupTestSetup( @@ -92,25 +93,4 @@ class BackupIntegrationTest : UiTestPrerequisites() { assertEquals(2, testSetup.getOnChoicesCallbackCount()) assertEquals(4, testSetup.getSelectedChoicesCount()) } - - @Test - @MediumTest - fun current_stage_restoration_activity() { - val testSetup = newTestSetup(BackupStage.EducationOverview) - testSetup.setDefaultContent() - - assertEquals(BackupStage.EducationOverview, testSetup.getStage()) - - composeTestRule.onNodeWithText(getStringResource(R.string.new_wallet_1_button)).also { - it.performClick() - } - - assertEquals(BackupStage.EducationRecoveryPhrase, testSetup.getStage()) - - composeTestRule.activityRule.scenario.onActivity { - it.recreate() - } - - assertEquals(BackupStage.EducationRecoveryPhrase, testSetup.getStage()) - } } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/TestOnboardingActivity.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/TestOnboardingActivity.kt deleted file mode 100644 index a91a30e6..00000000 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/TestOnboardingActivity.kt +++ /dev/null @@ -1,55 +0,0 @@ -package co.electriccoin.zcash.ui.screen.onboarding - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.viewModels -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.ui.Modifier -import co.electriccoin.zcash.ui.design.component.GradientSurface -import co.electriccoin.zcash.ui.design.theme.ZcashTheme -import co.electriccoin.zcash.ui.screen.onboarding.view.Onboarding -import co.electriccoin.zcash.ui.screen.onboarding.viewmodel.OnboardingViewModel - -class TestOnboardingActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setupUiContent() - } - - private fun setupUiContent() { - setContent { - ZcashTheme { - GradientSurface( - Modifier - .fillMaxWidth() - .fillMaxHeight() - ) { - WrapOnboarding() - } - } - } - } - - @Composable - private fun WrapOnboarding() { - val onboardingViewModel by viewModels() - - // TODO [#383]: https://github.com/zcash/secant-android-wallet/issues/383 - if (!onboardingViewModel.isImporting.collectAsState().value) { - Onboarding( - onboardingState = onboardingViewModel.onboardingState, - isDebugMenuEnabled = false, - onImportWallet = { onboardingViewModel.isImporting.value = true }, - onCreateWallet = {}, - onFixtureWallet = {} - ) - - reportFullyDrawn() - } - } -} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingActivityTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingActivityTest.kt new file mode 100644 index 00000000..0f7e9203 --- /dev/null +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingActivityTest.kt @@ -0,0 +1,44 @@ +package co.electriccoin.zcash.ui.screen.onboarding.integration + +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.test.filters.MediumTest +import co.electriccoin.zcash.test.UiTestPrerequisites +import co.electriccoin.zcash.ui.R +import co.electriccoin.zcash.ui.common.UiTestingActivity +import co.electriccoin.zcash.ui.screen.onboarding.model.OnboardingStage +import co.electriccoin.zcash.ui.screen.onboarding.view.OnboardingTestSetup +import co.electriccoin.zcash.ui.test.getStringResource +import org.junit.Assert.assertEquals +import org.junit.Rule +import org.junit.Test + +// TODO [#382]: https://github.com/zcash/secant-android-wallet/issues/382 +class OnboardingActivityTest : UiTestPrerequisites() { + @get:Rule + val composeTestRule = createAndroidComposeRule() + + private fun newTestSetup() = OnboardingTestSetup(composeTestRule, OnboardingStage.ShieldedByDefault) + + @Test + @MediumTest + fun current_stage_restoration_activity() { + val testSetup = newTestSetup() + testSetup.setDefaultContent() + + assertEquals(OnboardingStage.ShieldedByDefault, testSetup.getOnboardingStage()) + + composeTestRule.onNodeWithText(getStringResource(R.string.onboarding_next)).also { + it.performClick() + } + + assertEquals(OnboardingStage.UnifiedAddresses, testSetup.getOnboardingStage()) + + composeTestRule.activityRule.scenario.onActivity { + it.recreate() + } + + assertEquals(OnboardingStage.UnifiedAddresses, testSetup.getOnboardingStage()) + } +} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingIntegrationTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingIntegrationTest.kt similarity index 66% rename from ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingIntegrationTest.kt rename to ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingIntegrationTest.kt index dd53dc36..64eeb962 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingIntegrationTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/integration/OnboardingIntegrationTest.kt @@ -1,14 +1,14 @@ -package co.electriccoin.zcash.ui.screen.onboarding.view +package co.electriccoin.zcash.ui.screen.onboarding.integration import androidx.compose.ui.test.junit4.StateRestorationTester -import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.test.filters.MediumTest import co.electriccoin.zcash.test.UiTestPrerequisites import co.electriccoin.zcash.ui.R -import co.electriccoin.zcash.ui.screen.onboarding.TestOnboardingActivity import co.electriccoin.zcash.ui.screen.onboarding.model.OnboardingStage +import co.electriccoin.zcash.ui.screen.onboarding.view.OnboardingTestSetup import co.electriccoin.zcash.ui.test.getStringResource import org.junit.Assert.assertEquals import org.junit.Rule @@ -17,7 +17,7 @@ import org.junit.Test // TODO [#382]: https://github.com/zcash/secant-android-wallet/issues/382 class OnboardingIntegrationTest : UiTestPrerequisites() { @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createComposeRule() private fun newTestSetup(initialStage: OnboardingStage) = OnboardingTestSetup(composeTestRule, initialStage) @@ -49,25 +49,4 @@ class OnboardingIntegrationTest : UiTestPrerequisites() { assertEquals(OnboardingStage.More, testSetup.getOnboardingStage()) } - - @Test - @MediumTest - fun current_stage_restoration_activity() { - val testSetup = newTestSetup(OnboardingStage.ShieldedByDefault) - testSetup.setDefaultContent() - - assertEquals(OnboardingStage.ShieldedByDefault, testSetup.getOnboardingStage()) - - composeTestRule.onNodeWithText(getStringResource(R.string.onboarding_next)).also { - it.performClick() - } - - assertEquals(OnboardingStage.UnifiedAddresses, testSetup.getOnboardingStage()) - - composeTestRule.activityRule.scenario.onActivity { - it.recreate() - } - - assertEquals(OnboardingStage.UnifiedAddresses, testSetup.getOnboardingStage()) - } } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/TestUpdateActivity.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/TestUpdateActivity.kt deleted file mode 100644 index 7c74c528..00000000 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/TestUpdateActivity.kt +++ /dev/null @@ -1,36 +0,0 @@ -package co.electriccoin.zcash.ui.screen.update - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.ui.Modifier -import co.electriccoin.zcash.ui.design.component.GradientSurface -import co.electriccoin.zcash.ui.design.theme.ZcashTheme -import co.electriccoin.zcash.ui.screen.update.fixture.UpdateInfoFixture - -class TestUpdateActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setupUiContent() - } - - private fun setupUiContent() { - setContent { - ZcashTheme { - GradientSurface( - Modifier - .fillMaxWidth() - .fillMaxHeight() - ) { - WrapUpdate( - this, - UpdateInfoFixture.new(appUpdateInfo = null) - ) - } - } - } - } -} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewActivityTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewActivityTest.kt new file mode 100644 index 00000000..9d640caf --- /dev/null +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewActivityTest.kt @@ -0,0 +1,59 @@ +package co.electriccoin.zcash.ui.screen.update.integration + +import androidx.compose.ui.test.junit4.ComposeContentTestRule +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.performClick +import androidx.test.filters.MediumTest +import co.electriccoin.zcash.test.UiTestPrerequisites +import co.electriccoin.zcash.ui.common.UiTestingActivity +import co.electriccoin.zcash.ui.screen.update.AppUpdateChecker +import co.electriccoin.zcash.ui.screen.update.UpdateTag +import co.electriccoin.zcash.ui.screen.update.fixture.UpdateInfoFixture +import co.electriccoin.zcash.ui.screen.update.model.UpdateInfo +import co.electriccoin.zcash.ui.screen.update.model.UpdateState +import co.electriccoin.zcash.ui.screen.update.view.UpdateViewTestSetup +import org.junit.Assert.assertEquals +import org.junit.Rule +import org.junit.Test + +class UpdateActivityViewTest : UiTestPrerequisites() { + + @get:Rule + val composeTestRule = createAndroidComposeRule() + + @Test + @MediumTest + fun later_btn_force_update_test() { + val updateInfo = UpdateInfoFixture.new( + priority = AppUpdateChecker.Priority.HIGH, + force = true, + appUpdateInfo = null, + state = UpdateState.Prepared, + ) + val testSetup = newTestSetup(updateInfo) + + assertEquals(0, testSetup.getOnLaterCount()) + + composeTestRule.clickLater() + + assertEquals(0, testSetup.getOnLaterCount()) + + composeTestRule.activity.onBackPressed() + + assertEquals(0, testSetup.getOnLaterCount()) + } + + private fun newTestSetup(updateInfo: UpdateInfo) = UpdateViewTestSetup( + composeTestRule, + updateInfo + ).apply { + setDefaultContent() + } +} + +private fun ComposeContentTestRule.clickLater() { + onNodeWithTag(UpdateTag.BTN_LATER).also { + it.performClick() + } +} diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewModelTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewModelTest.kt index 4353a156..b9794f90 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewModelTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/integration/UpdateViewModelTest.kt @@ -3,8 +3,8 @@ package co.electriccoin.zcash.ui.screen.update.integration import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.lifecycle.viewModelScope import androidx.test.filters.MediumTest +import co.electriccoin.zcash.ui.common.UiTestingActivity import co.electriccoin.zcash.ui.screen.update.AppUpdateChecker -import co.electriccoin.zcash.ui.screen.update.TestUpdateActivity import co.electriccoin.zcash.ui.screen.update.fixture.UpdateInfoFixture import co.electriccoin.zcash.ui.screen.update.model.UpdateInfo import co.electriccoin.zcash.ui.screen.update.model.UpdateState @@ -26,7 +26,7 @@ import kotlin.test.assertNull @ExperimentalCoroutinesApi class UpdateViewModelTest { @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createAndroidComposeRule() private lateinit var viewModel: UpdateViewModel private lateinit var checker: AppUpdateCheckerMock diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/AppUpdateCheckerImpTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/AppUpdateCheckerImpTest.kt index 4c44c2f0..7e5fa640 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/AppUpdateCheckerImpTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/AppUpdateCheckerImpTest.kt @@ -2,12 +2,12 @@ package co.electriccoin.zcash.ui.screen.update.view import android.app.Activity import android.content.Context +import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.test.core.app.ApplicationProvider import androidx.test.filters.MediumTest import cash.z.ecc.android.sdk.ext.onFirst import co.electriccoin.zcash.ui.screen.update.AppUpdateCheckerImp -import co.electriccoin.zcash.ui.screen.update.TestUpdateActivity import co.electriccoin.zcash.ui.screen.update.model.UpdateInfo import co.electriccoin.zcash.ui.screen.update.model.UpdateState import com.google.android.play.core.install.model.ActivityResult @@ -15,7 +15,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.test.runTest import org.junit.Rule -import kotlin.test.Test +import org.junit.Test import kotlin.test.assertNotNull import kotlin.test.assertNull import kotlin.test.assertTrue @@ -23,7 +23,7 @@ import kotlin.test.assertTrue class AppUpdateCheckerImpTest { @get:Rule - val composeTestRule = createAndroidComposeRule() + val composeTestRule = createAndroidComposeRule() companion object { val context: Context = ApplicationProvider.getApplicationContext() diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/UpdateViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/UpdateViewTest.kt index a2151992..42657941 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/UpdateViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/update/view/UpdateViewTest.kt @@ -1,7 +1,7 @@ package co.electriccoin.zcash.ui.screen.update.view import androidx.compose.ui.test.junit4.ComposeContentTestRule -import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onRoot @@ -10,7 +10,6 @@ import androidx.test.filters.MediumTest import co.electriccoin.zcash.test.UiTestPrerequisites import co.electriccoin.zcash.ui.R import co.electriccoin.zcash.ui.screen.update.AppUpdateChecker -import co.electriccoin.zcash.ui.screen.update.TestUpdateActivity import co.electriccoin.zcash.ui.screen.update.UpdateTag import co.electriccoin.zcash.ui.screen.update.fixture.UpdateInfoFixture import co.electriccoin.zcash.ui.screen.update.model.UpdateInfo @@ -24,29 +23,7 @@ import org.junit.Test class UpdateViewTest : UiTestPrerequisites() { @get:Rule - val composeTestRule = createAndroidComposeRule() - - @Test - @MediumTest - fun later_btn_force_update_test() { - val updateInfo = UpdateInfoFixture.new( - priority = AppUpdateChecker.Priority.HIGH, - force = true, - appUpdateInfo = null, - state = UpdateState.Prepared, - ) - val testSetup = newTestSetup(updateInfo) - - assertEquals(0, testSetup.getOnLaterCount()) - - composeTestRule.clickLater() - - assertEquals(0, testSetup.getOnLaterCount()) - - composeTestRule.activity.onBackPressed() - - assertEquals(0, testSetup.getOnLaterCount()) - } + val composeTestRule = createComposeRule() @Test @MediumTest diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt index cfa31d9e..927a6f28 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt @@ -23,7 +23,6 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import cash.z.ecc.sdk.model.ZecRequest import cash.z.ecc.sdk.send -import co.electriccoin.zcash.ui.design.compat.FontCompat import co.electriccoin.zcash.ui.design.component.ConfigurationOverride import co.electriccoin.zcash.ui.design.component.GradientSurface import co.electriccoin.zcash.ui.design.component.Override @@ -82,15 +81,7 @@ class MainActivity : ComponentActivity() { setupSplashScreen() - if (FontCompat.isFontPrefetchNeeded()) { - lifecycleScope.launch { - FontCompat.prefetchFontsLegacy(applicationContext) - - setupUiContent() - } - } else { - setupUiContent() - } + setupUiContent() } private fun setupSplashScreen() {