Skip to content

Instantly share code, notes, and snippets.

@Raiden18
Last active July 21, 2022 19:18
Show Gist options
  • Save Raiden18/4864809b042b7bb12979e2605e46260d to your computer and use it in GitHub Desktop.
Save Raiden18/4864809b042b7bb12979e2605e46260d to your computer and use it in GitHub Desktop.
class SomeViewModelTest {
private lateinit var someViewModel: SomeViewModel
private val someInteractor: SomeInteractor = mockk(relaxed = true)
private val dataToLoad: String = "Data to load"
@Before
fun setUp() {
clearAllMocks()
}
@Test
fun `Loader should be shown when data is being loaded`() = runTest {
coEvery { someInteractor.loadSomething() } coAnswers {
delay(1_000)
dataToLoad
}
val dispatechers = TestDispatchersProvider(testScheduler)
someViewModel = SomeViewModel(someInteractor, dispatechers)
runCurrent()
// Replaced with veryfier
assertThat(someViewModel)
.loaderIsShown()
.errorIsHidden()
.contentIsHidden()
}
@Test
fun `Should show content if data is loaded`() = runTest {
coEvery { someInteractor.loadSomething() } returns dataToLoad
val dispatechers = TestDispatchersProvider(testScheduler)
someViewModel = SomeViewModel(someInteractor, dispatechers)
runCurrent()
// Replaced with veryfier
assertThat(someViewModel)
.contentIsShow(dataToLoad)
.errorIsHidden()
.loaderIsHidden()
}
@Test
fun `Should show error state if error appeared`() = runTest {
coEvery { someInteractor.loadSomething() } coAnswers { throw Throwable() }
val dispatechers = TestDispatchersProvider(testScheduler)
someViewModel = SomeViewModel(someInteractor, dispatechers)
runCurrent()
// Replaced with veryfier
assertThat(someViewModel)
.errorIsShown()
.contentIsHidden()
.loaderIsHidden()
}
@Test
fun `Should show content state if user clicks on retry button after loading data with error`() = runTest {
coEvery { someInteractor.loadSomething() } coAnswers { throw Throwable() }
val dispatechers = TestDispatchersProvider(testScheduler)
someViewModel = SomeViewModel(someInteractor, dispatechers)
runCurrent()
coEvery { someInteractor.loadSomething() } returns dataToLoad
someViewModel.onRetryButtonClicked()
// Replaced with veryfier
assertThat(someViewModel)
.contentIsShow(dataToLoad)
.errorIsHidden()
.loaderIsHidden()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment