Last active
January 9, 2018 13:50
-
-
Save makovkastar/e3e1a2c39b57d254f54f643cb2fb7f44 to your computer and use it in GitHub Desktop.
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
@MediumTest | |
@RunWith(AndroidJUnit4::class) | |
class LoginFragmentTest { | |
@Rule | |
@JvmField | |
val activityRule = IntentsTestRule(SingleFragmentActivity::class.java) | |
@Rule | |
@JvmField | |
val taskExecutorRule = InstantTaskExecutorRule() | |
@Rule | |
@JvmField | |
val mockitoRule: MockitoRule = MockitoJUnit.rule() | |
@Mock | |
private lateinit var viewModel: LoginViewModel | |
@Mock | |
private lateinit var emailTextChangedListener: TextWatcher | |
@Mock | |
private lateinit var passwordTextChangedListener: TextWatcher | |
private val emailField = ObservableField<String>() | |
private val passwordField = ObservableField<String>() | |
private val isSignInButtonEnabled = ObservableBoolean() | |
private val isProgressBarVisible = ObservableBoolean() | |
private val navigateToForgotPasswordPage = SingleLiveEvent<Unit>() | |
private val navigateToNextScreen = SingleLiveEvent<Unit>() | |
private val showErrorToast = SingleLiveEvent<Int>() | |
private lateinit var loginFragment: LoginFragment | |
@Before | |
fun setUp() { | |
loginFragment = LoginFragment() | |
`when`(viewModel.emailField).thenReturn(emailField) | |
`when`(viewModel.passwordField).thenReturn(passwordField) | |
`when`(viewModel.isSignInButtonEnabled).thenReturn(isSignInButtonEnabled) | |
`when`(viewModel.isProgressBarVisible).thenReturn(isProgressBarVisible) | |
`when`(viewModel.navigateToForgotPasswordPage).thenReturn(navigateToForgotPasswordPage) | |
`when`(viewModel.navigateToNextScreen).thenReturn(navigateToNextScreen) | |
`when`(viewModel.showErrorToast).thenReturn(showErrorToast) | |
`when`(viewModel.emailTextChangedListener()).thenReturn(emailTextChangedListener) | |
`when`(viewModel.passwordTextChangedListener()).thenReturn(passwordTextChangedListener) | |
loginFragment.viewModelFactory = createViewModelFactory(viewModel) | |
activityRule.activity.setFragment(loginFragment) | |
} | |
private fun <T : ViewModel> createViewModelFactory(viewModel: T): ViewModelProvider.Factory { | |
return object : ViewModelProvider.Factory { | |
override fun <T : ViewModel> create(viewModelClass: Class<T>): T { | |
if (viewModelClass.isAssignableFrom(viewModel.javaClass)) { | |
@Suppress("UNCHECKED_CAST") | |
return viewModel as T | |
} | |
throw IllegalArgumentException("Unknown view model class " + viewModelClass) | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment