Skip to content

Commit 38733f6

Browse files
committed
Fix Wear navigation startDestination
Also add a unit test covering activity startup and navigation
1 parent 764a75f commit 38733f6

File tree

3 files changed

+46
-6
lines changed

3 files changed

+46
-6
lines changed

Jetcaster/wear/src/main/java/com/example/jetcaster/MainActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,22 @@ import android.os.Bundle
2020
import androidx.activity.ComponentActivity
2121
import androidx.activity.compose.setContent
2222
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
23+
import androidx.navigation.NavHostController
24+
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController
2325
import dagger.hilt.android.AndroidEntryPoint
2426

2527
@AndroidEntryPoint
2628
class MainActivity : ComponentActivity() {
29+
lateinit var navController: NavHostController
30+
2731
override fun onCreate(savedInstanceState: Bundle?) {
2832
installSplashScreen()
2933
super.onCreate(savedInstanceState)
3034

3135
setContent {
32-
WearApp()
36+
navController = rememberSwipeDismissableNavController()
37+
38+
WearApp(navController)
3339
}
3440
}
3541
}

Jetcaster/wear/src/main/java/com/example/jetcaster/WearApp.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ import androidx.compose.ui.Modifier
2525
import androidx.compose.ui.graphics.Color
2626
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2727
import androidx.lifecycle.viewmodel.compose.viewModel
28+
import androidx.navigation.NavHostController
2829
import androidx.wear.compose.navigation.SwipeDismissableNavHost
2930
import androidx.wear.compose.navigation.composable
30-
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController
3131
import androidx.wear.compose.navigation.rememberSwipeDismissableNavHostState
3232
import com.example.jetcaster.theme.WearAppTheme
3333
import com.example.jetcaster.ui.Episode
@@ -57,16 +57,14 @@ import com.google.android.horologist.media.ui.navigation.NavigationScreens
5757
import com.google.android.horologist.media.ui.screens.playerlibrarypager.PlayerLibraryPagerScreen
5858

5959
@Composable
60-
fun WearApp() {
61-
62-
val navController = rememberSwipeDismissableNavController()
60+
fun WearApp(navController: NavHostController) {
6361
val navHostState = rememberSwipeDismissableNavHostState()
6462
val volumeViewModel: VolumeViewModel = viewModel(factory = VolumeViewModel.Factory)
6563

6664
WearAppTheme {
6765
AppScaffold {
6866
SwipeDismissableNavHost(
69-
startDestination = NavigationScreens.Player.navRoute,
67+
startDestination = NavigationScreens.Player.playerDestination(),
7068
navController = navController,
7169
modifier = Modifier.background(Color.Transparent),
7270
state = navHostState,
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.example.jetcaster
2+
3+
import androidx.compose.ui.test.junit4.createAndroidComposeRule
4+
import com.example.jetcaster.ui.JetcasterNavController.navigateToUpNext
5+
import org.junit.Assert.assertEquals
6+
import org.junit.Rule
7+
import org.junit.Test
8+
import org.junit.runner.RunWith
9+
import org.robolectric.RobolectricTestRunner
10+
import org.robolectric.annotation.Config
11+
import org.robolectric.annotation.GraphicsMode
12+
13+
@RunWith(RobolectricTestRunner::class)
14+
@Config(sdk = [34])
15+
@GraphicsMode(GraphicsMode.Mode.NATIVE)
16+
class NavigationTest {
17+
@get:Rule
18+
val rule = createAndroidComposeRule(MainActivity::class.java)
19+
20+
@Test
21+
fun launchAndNavigate() {
22+
val activity = rule.activity
23+
24+
val navController = activity.navController
25+
26+
rule.waitUntil {
27+
navController.currentDestination?.route != null
28+
}
29+
30+
assertEquals("player?page={page}", navController.currentDestination?.route)
31+
32+
navController.navigateToUpNext()
33+
34+
assertEquals("upNext", navController.currentDestination?.route)
35+
}
36+
}

0 commit comments

Comments
 (0)