@@ -33,13 +33,17 @@ import androidx.test.espresso.Espresso
3333import androidx.test.espresso.NoActivityResumedException
3434import com.google.samples.apps.nowinandroid.MainActivity
3535import com.google.samples.apps.nowinandroid.R
36+ import com.google.samples.apps.nowinandroid.core.network.fake.FakeNiaNetworkDataSource
3637import com.google.samples.apps.nowinandroid.core.rules.GrantPostNotificationsPermissionRule
3738import dagger.hilt.android.testing.BindValue
3839import dagger.hilt.android.testing.HiltAndroidRule
3940import dagger.hilt.android.testing.HiltAndroidTest
41+ import kotlinx.coroutines.test.runTest
42+ import org.junit.Before
4043import org.junit.Rule
4144import org.junit.Test
4245import org.junit.rules.TemporaryFolder
46+ import javax.inject.Inject
4347import kotlin.properties.ReadOnlyProperty
4448import com.google.samples.apps.nowinandroid.feature.bookmarks.R as BookmarksR
4549import com.google.samples.apps.nowinandroid.feature.foryou.R as FeatureForyouR
@@ -78,6 +82,9 @@ class NavigationTest {
7882 @get:Rule(order = 3 )
7983 val composeTestRule = createAndroidComposeRule<MainActivity >()
8084
85+ @Inject
86+ lateinit var datasource: FakeNiaNetworkDataSource
87+
8188 private fun AndroidComposeTestRule <* , * >.stringResource (@StringRes resId : Int ) =
8289 ReadOnlyProperty <Any ?, String > { _, _ -> activity.getString(resId) }
8390
@@ -92,6 +99,9 @@ class NavigationTest {
9299 private val brand by composeTestRule.stringResource(SettingsR .string.brand_android)
93100 private val ok by composeTestRule.stringResource(SettingsR .string.dismiss_dialog_button_text)
94101
102+ @Before
103+ fun setup () = hiltRule.inject()
104+
95105 @Test
96106 fun firstScreen_isForYou () {
97107 composeTestRule.apply {
@@ -251,11 +261,11 @@ class NavigationTest {
251261 }
252262
253263 @Test
254- fun navigationBar_multipleBackStackInterests () {
264+ fun navigationBar_multipleBackStackInterests () = runTest {
265+ suspend fun randomTopicName () = datasource.getTopics(ids = null ).random().name
255266 composeTestRule.apply {
256267 onNodeWithText(interests).performClick()
257- // TODO: Grab string from fake data
258- onNodeWithText(" Android Studio & Tools" ).performClick()
268+ onNodeWithText(randomTopicName()).performClick()
259269
260270 // Switch tab
261271 onNodeWithText(forYou).performClick()
@@ -264,7 +274,7 @@ class NavigationTest {
264274 onNodeWithText(interests).performClick()
265275
266276 // Verify we're not in the list of interests
267- onNodeWithText(" Android Auto " ) .assertDoesNotExist() // TODO: Grab string from fake data
277+ onNodeWithText(randomTopicName()) .assertDoesNotExist()
268278 }
269279 }
270280}
0 commit comments