From 12318657e4e285346de0c5a34bb240050eb0e31d Mon Sep 17 00:00:00 2001
From: Mohamed Metwalli <mohamed.metwalli@sap.com>
Date: Mon, 4 Jan 2021 13:37:27 +0100
Subject: [PATCH] Add an inline function that defaults to AppTheme

---
 ...ardingDeltaInteroperabilityFragmentTest.kt |  4 ++--
 .../ui/onboarding/OnboardingFragmentTest.kt   |  4 ++--
 .../OnboardingNotificationsFragmentTest.kt    |  4 ++--
 .../OnboardingPrivacyFragmentTest.kt          |  4 ++--
 .../onboarding/OnboardingTestFragmentTest.kt  |  4 ++--
 .../OnboardingTracingFragmentTest.kt          |  4 ++--
 .../java/testhelpers/TestExtensions.kt        | 22 +++++++++++++++++++
 7 files changed, 34 insertions(+), 12 deletions(-)
 create mode 100644 Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt

diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
index af650d4ec..7c7e8aab2 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
@@ -21,6 +20,7 @@ import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
 import testhelpers.TestDispatcherProvider
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -59,7 +59,7 @@ class OnboardingDeltaInteroperabilityFragmentTest : BaseUITest() {
     @Screenshot
     @Test
     fun capture_screenshot() {
-        launchFragmentInContainer<OnboardingDeltaInteroperabilityFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingDeltaInteroperabilityFragment>()
         // Check any view to make sure screenshot is not blank
         onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
         Screengrab.screenshot(OnboardingDeltaInteroperabilityFragment::class.simpleName)
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
index dee99dde9..afbfe6575 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.action.ViewActions.click
 import androidx.test.espresso.action.ViewActions.scrollTo
@@ -19,6 +18,7 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -49,7 +49,7 @@ class OnboardingFragmentTest : BaseUITest() {
     @Screenshot
     @Test
     fun capture_screenshot() {
-        launchFragmentInContainer<OnboardingFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingFragment>()
         // Check any view to make sure screenshot is not blank
         onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
         Screengrab.screenshot(OnboardingFragment::class.simpleName)
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
index d721c815c..33eb47d75 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
@@ -17,6 +16,7 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -47,7 +47,7 @@ class OnboardingNotificationsFragmentTest : BaseUITest() {
     @Screenshot
     @Test
     fun capture_screenshot() {
-        launchFragmentInContainer<OnboardingNotificationsFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingNotificationsFragment>()
         // Check any view to make sure screenshot is not blank
         onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
         Screengrab.screenshot(OnboardingNotificationsFragment::class.simpleName)
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
index 701352524..aa3166ad0 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso
 import androidx.test.espresso.assertion.ViewAssertions
 import androidx.test.espresso.matcher.ViewMatchers
@@ -16,6 +15,7 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -46,7 +46,7 @@ class OnboardingPrivacyFragmentTest : BaseUITest() {
     @Screenshot
     @Test
     fun capture_screenshot() {
-        launchFragmentInContainer<OnboardingPrivacyFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingPrivacyFragment>()
         // Check any view to make sure screenshot is not blank
         Espresso.onView(ViewMatchers.withId(R.id.onboarding_button_next))
             .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
index 774b691c0..9cc641ea4 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
@@ -17,6 +16,7 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -47,7 +47,7 @@ class OnboardingTestFragmentTest : BaseUITest() {
     @Screenshot
     @Test
     fun capture_screenshot() {
-        launchFragmentInContainer<OnboardingTestFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingTestFragment>()
         // Check any view to make sure screenshot is not blank
         onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
         Screengrab.screenshot(OnboardingTestFragment::class.simpleName)
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
index 090c645c6..18877ff1e 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.onboarding
 
 import androidx.fragment.app.testing.launchFragment
-import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
@@ -26,6 +25,7 @@ import org.junit.runner.RunWith
 import testhelpers.BaseUITest
 import testhelpers.Screenshot
 import testhelpers.TestDispatcherProvider
+import testhelpers.launchFragmentInContainer2
 import tools.fastlane.screengrab.Screengrab
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
@@ -72,7 +72,7 @@ class OnboardingTracingFragmentTest : BaseUITest() {
     @Test
     fun capture_screenshot() {
         val simpleName = OnboardingTracingFragment::class.simpleName
-        launchFragmentInContainer<OnboardingTracingFragment>(themeResId = R.style.AppTheme)
+        launchFragmentInContainer2<OnboardingTracingFragment>()
         // Check any view to make sure screenshot is not blank
         onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
         Screengrab.screenshot(simpleName)
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt
new file mode 100644
index 000000000..5e9c30423
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt
@@ -0,0 +1,22 @@
+package testhelpers;
+
+import android.os.Bundle
+import androidx.annotation.StyleRes
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentFactory
+import androidx.fragment.app.testing.FragmentScenario
+import de.rki.coronawarnapp.R
+
+/**
+ * Launches Fragment in Activity root container. Same as [androidx.fragment.app.testing.launchFragmentInContainer]
+ * except that it defaults the theme to [R.style.AppTheme].
+ * This helps to avoid showing default ActionBar from [R.style.FragmentScenarioEmptyFragmentActivityTheme]
+ * in cases where a screenshot is needed to match the exact theme in the App.
+ */
+inline fun <reified F : Fragment> launchFragmentInContainer2(
+    fragmentArgs: Bundle? = null,
+    @StyleRes themeResId: Int = R.style.AppTheme,
+    factory: FragmentFactory? = null
+) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory)
+
+
-- 
GitLab