Skip to content
Snippets Groups Projects
Commit b83a912b authored by Mohamed Metwalli's avatar Mohamed Metwalli
Browse files

Setup tests for contact diary onboarding

parent 69037fbf
No related branches found
No related tags found
No related merge requests found
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
}
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
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
}
......@@ -11,7 +11,8 @@ import javax.inject.Singleton
modules = [
AndroidSupportInjectionModule::class,
MockViewModelModule::class,
FragmentTestModuleRegistrar::class
FragmentTestModuleRegistrar::class,
TestAndroidModule::class
]
)
@Singleton
......
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment