Last active
March 13, 2019 19:08
-
-
Save RicardoBelchior/8243dca237d20d89484a32d23b545680 to your computer and use it in GitHub Desktop.
Fragment test example, using AndroidX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private lateinit var scenario: FragmentScenario<SearchFragment> | |
private val parentActivity = mock<SearchFragment.ParentActivity>() | |
@Before | |
fun setUp() { | |
// Prepare fake data for SearchFragment | |
// ... | |
// Setup the FragmentScenario and attach any required mock data to it | |
scenario = launchFragmentInContainer<SearchFragment>(Bundle.EMPTY, R.style.Theme_AppCompat_Light) | |
scenario.onFragment { | |
it.setParentActivity(parentActivity) | |
} | |
} | |
@Test | |
fun `when loading, progressbar is displayed`() { | |
whenSearchReturns(Single.never()) | |
scenario.onFragment { | |
it.performQuery("brexit") | |
it.progressBar().shouldBeVisible() | |
} | |
} | |
///////////////////////////////////////////////////////////////// | |
private fun whenSearchReturns(singleResult: Single<List<Tag>>) { | |
given(searchRequest.execute(any())).willReturn(singleResult) | |
} | |
private fun SearchFragment.performQuery(query: String) { | |
searchView() | |
.setQuery(query, true) | |
} | |
// Or, if you declare these Views in the fragment w/ package-protected level, | |
// you can call those fields directly. | |
private fun SearchFragment.searchView() = | |
view!!.findViewById<SearchView>(R.id.search_card_view_search_view) | |
private fun SearchFragment.progressBar() = | |
view!!.findViewById<View>(R.id.fragment_search_progress_bar) | |
private fun View.shouldBeVisible() { | |
visibility shouldEqualTo View.VISIBLE | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment