Created
February 12, 2019 14:34
-
-
Save PhilippeBoisney/337c548dfa65369876df7efc33133799 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
@RunWith(AndroidJUnit4::class) | |
@LargeTest | |
class SearchUserFragmentTest: BaseIT() { | |
@Rule | |
@JvmField | |
val activityRule = ActivityTestRule(MainActivity::class.java, true, false) | |
@get:Rule | |
var executorRule = CountingTaskExecutorRule() | |
// OVERRIDE --- | |
override fun isMockServerEnabled() = true | |
@Before | |
override fun setUp() { | |
super.setUp() | |
configureCustomDependencies() | |
activityRule.launchActivity(null) | |
} | |
// TESTS --- | |
@Test | |
fun whenFragmentIsEmpty() { | |
onView(withId(R.id.fragment_search_user_empty_list_image)).check(matches(isDisplayed())) | |
onView(withId(R.id.fragment_search_user_empty_list_title)).check(matches(isDisplayed())) | |
onView(withId(R.id.fragment_search_user_empty_list_title)).check(matches(withText(containsString(getString(R.string.no_result_found))))) | |
onView(withId(R.id.fragment_search_user_empty_list_button)).check(matches(not(isDisplayed()))) | |
} | |
@Test | |
fun whenUserSearchUsersAndSucceed() { | |
mockHttpResponse("search_users.json", HttpURLConnection.HTTP_OK) | |
mockHttpResponse("detail_user.json", HttpURLConnection.HTTP_OK) | |
mockHttpResponse("repos_user.json", HttpURLConnection.HTTP_OK) | |
mockHttpResponse("followers_user.json", HttpURLConnection.HTTP_OK) | |
mockHttpResponse("search_users_empty.json", HttpURLConnection.HTTP_OK) | |
onView(withId(R.id.action_search)).perform(click()) | |
onView(isAssignableFrom(AutoCompleteTextView::class.java)).perform(typeText("t")) | |
waitForAdapterChangeWithPagination(getRecyclerView(), executorRule, 4) | |
onView(withId(R.id.fragment_search_user_rv)).check(matches((hasItemCount(1)))) | |
onView(allOf(withId(R.id.item_search_user_title), withText("PhilippeBoisney"))).check(matches(isDisplayed())) | |
onView(allOf(withId(R.id.item_search_user_repositories), withText("1346 - 32 ${getString(R.string.repositories)}"))).check(matches(isDisplayed())) | |
onView(allOf(withId(R.id.item_search_user_follower_name), withText("UgurMercan"))).check(matches(isDisplayed())) | |
onView(allOf(withId(R.id.item_search_user_follower_count), withText("+102"))).check(matches(isDisplayed())) | |
} | |
@Test | |
fun whenUserSearchUsersAndFailed() { | |
mockHttpResponse("search_users.json", HttpURLConnection.HTTP_BAD_REQUEST) | |
onView(withId(R.id.action_search)).perform(click()) | |
onView(isAssignableFrom(AutoCompleteTextView::class.java)).perform(typeText("t")) | |
Thread.sleep(1000) | |
onView(withId(R.id.fragment_search_user_empty_list_image)).check(matches(isDisplayed())) | |
onView(withId(R.id.fragment_search_user_empty_list_title)).check(matches(isDisplayed())) | |
onView(withId(R.id.fragment_search_user_empty_list_title)).check(matches(withText(containsString(getString(R.string.technical_error))))) | |
onView(withId(R.id.fragment_search_user_empty_list_button)).check(matches(isDisplayed())) | |
} | |
// UTILS --- | |
/** | |
* Configure custom [Module] for each [Test] | |
*/ | |
private fun configureCustomDependencies() { | |
loadKoinModules(configureAppComponent(getMockUrl()).toMutableList().apply { add(storageModuleTest) }) | |
} | |
/** | |
* Convenient access to String resources | |
*/ | |
private fun getString(id: Int) = activityRule.activity.getString(id) | |
/** | |
* Convenient access to [SearchUserFragment]'s RecyclerView | |
*/ | |
private fun getRecyclerView() = activityRule.activity.findViewById<RecyclerView>(R.id.fragment_search_user_rv) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment