Last active
July 21, 2022 19:18
-
-
Save Raiden18/4864809b042b7bb12979e2605e46260d 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
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