Skip to content

Instantly share code, notes, and snippets.

@krzdabrowski
Created December 2, 2022 16:43
Show Gist options
  • Save krzdabrowski/c32106d8652144f507bc95eb181698c6 to your computer and use it in GitHub Desktop.
Save krzdabrowski/c32106d8652144f507bc95eb181698c6 to your computer and use it in GitHub Desktop.
class RocketsScreenTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<ComponentActivity>()
private val testRockets = generateTestRocketsFromPresentation()
private lateinit var rocketContentDescription: String
private lateinit var errorRefreshingMessage: String
(...)
@Before
fun setUp() {
with(composeTestRule.activity) {
rocketContentDescription = getString(R.string.rocket_image_content_description)
errorRefreshingMessage = getString(R.string.rockets_error_refreshing)
(...)
}
}
@Test
fun rocketsScreen_whenContentAvailableAndErrorOccurs_shouldKeepContent() {
setUpComposable(
RocketsUiState(
rockets = testRockets,
isError = true
)
)
composeTestRule
.onAllNodesWithContentDescription(rocketContentDescription)
.assertCountEquals(testRockets.size)
}
@Test
fun rocketsScreen_whenContentAvailableAndErrorOccurs_shouldShowErrorSnackbar() {
setUpComposable(
RocketsUiState(
rockets = testRockets,
isError = true
)
)
composeTestRule
.onNodeWithText(errorRefreshingMessage)
.assertExists()
}
private fun setUpComposable(
rocketsUiState: RocketsUiState
) {
composeTestRule.setContent {
RocketsScreen(
uiState = rocketsUiState,
(...)
)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment