· 8 years ago · Apr 20, 2018, 05:16 PM
1@RunWith(AndroidJUnit4::class)
2class LoginActivityTest {
3
4 private val email = "***********@gmail.com"
5 private val password = "123456"
6
7 @Suppress("MemberVisibilityCanBePrivate")
8 @get:Rule
9 val activityRule = ActivityTestRule(LoginActivity::class.java, true, false)
10
11 private lateinit var viewModel:LoginViewModel
12 private val userData = MutableLiveData<Resource<User>>()
13
14 @Before
15 @Throws(Throwable::class)
16 fun init() {
17 Log.d("LoginTest Init", "vm mocked....")
18 viewModel = mock()
19 `when`(viewModel.getUser()).thenReturn(userData)
20 doNothing().`when`(viewModel).setLogin(anyString(), anyString())
21
22 val intent = Intent(InstrumentationRegistry.getTargetContext(), LoginActivity::class.java)
23 activityRule.launchActivity(intent)
24 activityRule.activity.viewModelFactory = ViewModelUtil.createFor(viewModel)
25 EspressoTestUtil.disableProgressBarAnimations(activityRule)
26 }
27
28 @Test
29 fun loading(){
30 //Given: our login event has been kicked off
31 onView(withId(R.id.etEmail)).perform(replaceText(email))
32 onView(withId(R.id.etPassword)).perform(replaceText(password))
33
34 Log.d("LoginTest", "Posting loading value ")
35 userData.postValue(Resource.loading(null))
36
37 onView(withId(R.id.progress_text_view)).check(matches(isDisplayed()))
38 }
39}