architecture-samples icon indicating copy to clipboard operation
architecture-samples copied to clipboard

DataBindingIdlingResource and Hilt

Open grrigore opened this issue 2 years ago • 2 comments

How can we use DataBindingIdlingResource and also use launchFragmentInHiltContainer?

launchFragmentInHiltContainer is not returning anything. However, I've modified it like this:

inline fun <reified T : Fragment> launchFragmentInHiltContainer(
    fragmentArgs: Bundle? = null,
    @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
    crossinline action: Fragment.() -> Unit = {}
): ActivityScenario<HiltTestActivity> {
    val startActivityIntent = Intent.makeMainActivity(
        ComponentName(
            ApplicationProvider.getApplicationContext(),
            HiltTestActivity::class.java
        )
    ).putExtra(
        "androidx.fragment.app.testing.FragmentScenario.EmptyFragmentActivity.THEME_EXTRAS_BUNDLE_KEY",
        themeResId
    )

    ActivityScenario.launch<HiltTestActivity>(startActivityIntent).onActivity { activity ->
        val fragment: Fragment = activity.supportFragmentManager.fragmentFactory.instantiate(
            Preconditions.checkNotNull(T::class.java.classLoader),
            T::class.java.name
        )
        fragment.arguments = fragmentArgs
        activity.supportFragmentManager
            .beginTransaction()
            .add(android.R.id.content, fragment, "")
            .commitNow()

        fragment.action()
    }.also {
        return it
    }
}

Is this a good approach?

grrigore avatar May 06 '22 12:05 grrigore

This only returns an ActivityScenario. How would you get it to return a FragmentScenario?

sarimmehdi avatar Dec 08 '22 23:12 sarimmehdi

I'm sorry but it's been a long time. I might have used different versions than you do.

grrigore avatar Dec 09 '22 08:12 grrigore