From 3ffbe20b1d3b7112e9d9918074ec0479cb47fb72 Mon Sep 17 00:00:00 2001 From: TM Date: Wed, 22 May 2024 02:31:32 -0700 Subject: [PATCH] Update NiaAppStateTest.kt --- .../apps/nowinandroid/ui/NiaAppStateTest.kt | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppStateTest.kt b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppStateTest.kt index 7c9dfcc7a..cdea75066 100644 --- a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppStateTest.kt +++ b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppStateTest.kt @@ -208,6 +208,97 @@ class NiaAppStateTest { ) } + @Test + fun niaAppState_whenErrorIsAdded_ErrorMessageIsPresent() = runTest(UnconfinedTestDispatcher()) { + composeTestRule.setContent { + state = NiaAppState( + navController = NavHostController(LocalContext.current), + coroutineScope = backgroundScope, + windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(900.dp, 1200.dp)), + networkMonitor = networkMonitor, + userNewsResourceRepository = userNewsResourceRepository, + timeZoneMonitor = timeZoneMonitor, + ) + } + + backgroundScope.launch { state.errorMessage.collect() } + state.addErrorMessage("Test Error Message") + assertEquals( + "Test Error Message", + state.errorMessage.value, + ) + } + + @Test + fun niaAppState_whenErrorsAreAdded_FirstErrorMessageIsPresent() = runTest(UnconfinedTestDispatcher()) { + composeTestRule.setContent { + state = NiaAppState( + navController = NavHostController(LocalContext.current), + coroutineScope = backgroundScope, + windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(900.dp, 1200.dp)), + networkMonitor = networkMonitor, + userNewsResourceRepository = userNewsResourceRepository, + timeZoneMonitor = timeZoneMonitor, + ) + } + + backgroundScope.launch { state.errorMessage.collect() } + state.addErrorMessage("Test Error Message 1") + state.addErrorMessage("Test Error Message 2") + assertEquals( + "Test Error Message 1", + state.errorMessage.value, + ) + } + + @Test + fun niaAppState_whenErrorIsCleared_ErrorMessageIsNotPresent() = runTest(UnconfinedTestDispatcher()) { + composeTestRule.setContent { + state = NiaAppState( + navController = NavHostController(LocalContext.current), + coroutineScope = backgroundScope, + windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(900.dp, 1200.dp)), + networkMonitor = networkMonitor, + userNewsResourceRepository = userNewsResourceRepository, + timeZoneMonitor = timeZoneMonitor, + ) + } + + backgroundScope.launch { state.errorMessage.collect() } + state.addErrorMessage("Test Error Message") + state.clearErrorMessage() + assertEquals( + null, + state.errorMessage.value, + ) + } + + @Test + fun niaAppState_whenErrorsAreCleared_NextErrorMessageIsPresent() = runTest(UnconfinedTestDispatcher()) { + composeTestRule.setContent { + state = NiaAppState( + navController = NavHostController(LocalContext.current), + coroutineScope = backgroundScope, + windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(900.dp, 1200.dp)), + networkMonitor = networkMonitor, + userNewsResourceRepository = userNewsResourceRepository, + timeZoneMonitor = timeZoneMonitor, + ) + } + + backgroundScope.launch { state.errorMessage.collect() } + state.addErrorMessage("Test Error Message 1") + state.addErrorMessage("Test Error Message 2") + state.clearErrorMessage() + + assertEquals( + "Test Error Message 2", + state.errorMessage.value, + ) + } + + + private fun getCompactWindowClass() = WindowSizeClass.calculateFromSize(DpSize(500.dp, 300.dp)) }