diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/contactdiary/ContactDiaryOnboardingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/contactdiary/ContactDiaryOnboardingFragmentTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..9405796513e6c152541a0b30c3f45f42e4dd8d2c --- /dev/null +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/contactdiary/ContactDiaryOnboardingFragmentTest.kt @@ -0,0 +1,55 @@ +package de.rki.coronawarnapp.ui.contactdiary + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import dagger.Module +import dagger.android.ContributesAndroidInjector +import de.rki.coronawarnapp.contactdiary.ui.onboarding.ContactDiaryOnboardingFragment +import de.rki.coronawarnapp.contactdiary.ui.onboarding.ContactDiaryOnboardingFragmentViewModel +import io.mockk.MockKAnnotations +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import testhelpers.BaseUITest +import testhelpers.SystemUIDemoModeRule +import testhelpers.launchFragment2 +import tools.fastlane.screengrab.locale.LocaleTestRule + +@RunWith(AndroidJUnit4::class) +class ContactDiaryOnboardingFragmentTest : BaseUITest() { + @Rule + @JvmField + val localeTestRule = LocaleTestRule() + + @get:Rule + val systemUIDemoModeRule = SystemUIDemoModeRule() + + @Before + fun setup() { + MockKAnnotations.init(this, relaxed = true) + + setupMockViewModel( + object : ContactDiaryOnboardingFragmentViewModel.Factory { + override fun create(): ContactDiaryOnboardingFragmentViewModel = + ContactDiaryOnboardingFragmentViewModel() + } + ) + } + + @After + fun teardown() { + clearAllViewModels() + } + + @Test + fun launch_fragment() { + launchFragment2<ContactDiaryOnboardingFragment>() + } +} + +@Module +abstract class ContactDiaryOnboardingFragmentTestModule { + @ContributesAndroidInjector + abstract fun contactDiaryOnboardingFragment(): ContactDiaryOnboardingFragment +} diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt index d8f85865286eebd115ee281a9275e9b678b297d1..24abcde429ee4dec6ce63fafaa816c1a8ccc8874 100644 --- a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt @@ -1,6 +1,7 @@ package testhelpers import dagger.Module +import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOnboardingFragmentTestModule import de.rki.coronawarnapp.ui.main.home.HomeFragmentTestModule import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityFragmentTestModule import de.rki.coronawarnapp.ui.onboarding.OnboardingFragmentTestModule @@ -33,7 +34,9 @@ import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule SubmissionTestResultConsentGivenTestModule::class, SubmissionSymptomIntroFragmentTestModule::class, SubmissionContactTestModule::class, - SubmissionQRScanFragmentModule::class + SubmissionQRScanFragmentModule::class, + // Contact Diary + ContactDiaryOnboardingFragmentTestModule::class ] ) class FragmentTestModuleRegistrar diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestAndroidModule.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestAndroidModule.kt new file mode 100644 index 0000000000000000000000000000000000000000..81093b7a7d4055e8562c823a34318640ac6b7c5b --- /dev/null +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestAndroidModule.kt @@ -0,0 +1,16 @@ +package testhelpers + +import android.content.Context +import androidx.test.platform.app.InstrumentationRegistry +import dagger.Module +import dagger.Provides +import de.rki.coronawarnapp.util.di.AppContext +import javax.inject.Singleton + +@Module +class TestAndroidModule { + @Provides + @Singleton + @AppContext + fun context(): Context = InstrumentationRegistry.getInstrumentation().targetContext +} diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestAppComponent.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestAppComponent.kt index 53c3c747ce83f218775dd3176b7479f25ed127b7..adc3a10ace099a3f9d7770d8b94605bced233747 100644 --- a/Corona-Warn-App/src/androidTest/java/testhelpers/TestAppComponent.kt +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestAppComponent.kt @@ -11,7 +11,8 @@ import javax.inject.Singleton modules = [ AndroidSupportInjectionModule::class, MockViewModelModule::class, - FragmentTestModuleRegistrar::class + FragmentTestModuleRegistrar::class, + TestAndroidModule::class ] ) @Singleton diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt index 601202d139449d7ad1265b5e91d36457724a9e2e..4ed236e7498ba989071f881aa568156aa99dc8fa 100644 --- a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt @@ -22,3 +22,14 @@ inline fun <reified F : Fragment> launchFragmentInContainer2( @StyleRes themeResId: Int = R.style.AppTheme, factory: FragmentFactory? = null ) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory) + +/** + * Launches Fragment in Activity. + * Same as [androidx.fragment.app.testing.launchFragment] except that it defaults + * the theme to [R.style.AppTheme]. + */ +inline fun <reified F : Fragment> launchFragment2( + fragmentArgs: Bundle? = null, + @StyleRes themeResId: Int = R.style.AppTheme, + factory: FragmentFactory? = null +) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, factory)