mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 00:57:02 +05:30
test: add more bottom nav tests
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
This commit is contained in:
parent
9185c0e36b
commit
9a79f3ba40
7 changed files with 58 additions and 3 deletions
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 33 KiB |
22
app/src/androidTest/java/dev/msfjarvis/lobsters/ui/Theme.kt
Normal file
22
app/src/androidTest/java/dev/msfjarvis/lobsters/ui/Theme.kt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
package dev.msfjarvis.lobsters.ui
|
||||||
|
|
||||||
|
import androidx.compose.material.MaterialTheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import dev.msfjarvis.lobsters.ui.theme.darkColors
|
||||||
|
import dev.msfjarvis.lobsters.ui.theme.lightColors
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LightTestTheme(children: @Composable () -> Unit) {
|
||||||
|
MaterialTheme(
|
||||||
|
colors = lightColors,
|
||||||
|
content = children,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun DarkTestTheme(children: @Composable () -> Unit) {
|
||||||
|
MaterialTheme(
|
||||||
|
colors = darkColors,
|
||||||
|
content = children,
|
||||||
|
)
|
||||||
|
}
|
|
@ -1,10 +1,18 @@
|
||||||
package dev.msfjarvis.lobsters.ui.navigation
|
package dev.msfjarvis.lobsters.ui.navigation
|
||||||
|
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.graphics.asAndroidBitmap
|
import androidx.compose.ui.graphics.asAndroidBitmap
|
||||||
|
import androidx.compose.ui.test.assertHasClickAction
|
||||||
import androidx.compose.ui.test.captureToImage
|
import androidx.compose.ui.test.captureToImage
|
||||||
import androidx.compose.ui.test.junit4.createComposeRule
|
import androidx.compose.ui.test.junit4.createComposeRule
|
||||||
|
import androidx.compose.ui.test.onNodeWithTag
|
||||||
import androidx.compose.ui.test.onRoot
|
import androidx.compose.ui.test.onRoot
|
||||||
|
import androidx.compose.ui.test.performClick
|
||||||
import com.karumi.shot.ScreenshotTest
|
import com.karumi.shot.ScreenshotTest
|
||||||
|
import dev.msfjarvis.lobsters.ui.DarkTestTheme
|
||||||
import dev.msfjarvis.lobsters.ui.main.LobstersBottomNav
|
import dev.msfjarvis.lobsters.ui.main.LobstersBottomNav
|
||||||
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
|
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
|
@ -18,7 +26,7 @@ class LobstersBottomNavTest : ScreenshotTest {
|
||||||
@Test
|
@Test
|
||||||
fun bottomNavIsRenderedCorrectlyOnScreen() {
|
fun bottomNavIsRenderedCorrectlyOnScreen() {
|
||||||
composeTestRule.setContent {
|
composeTestRule.setContent {
|
||||||
LobstersTheme {
|
DarkTestTheme {
|
||||||
LobstersBottomNav(
|
LobstersBottomNav(
|
||||||
currentDestination = Destination.startDestination,
|
currentDestination = Destination.startDestination,
|
||||||
navigateToDestination = { /*TODO*/ },
|
navigateToDestination = { /*TODO*/ },
|
||||||
|
@ -29,4 +37,28 @@ class LobstersBottomNavTest : ScreenshotTest {
|
||||||
|
|
||||||
compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap())
|
compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun bottomNavUpdatesCorrectly() {
|
||||||
|
composeTestRule.setContent {
|
||||||
|
DarkTestTheme {
|
||||||
|
var destination by remember { mutableStateOf(Destination.startDestination) }
|
||||||
|
|
||||||
|
LobstersBottomNav(
|
||||||
|
currentDestination = destination,
|
||||||
|
navigateToDestination = { newDestination -> destination = newDestination },
|
||||||
|
jumpToIndex = { /*TODO*/ }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
selectNode(Destination.Saved.name)
|
||||||
|
|
||||||
|
compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun selectNode(testTag: String) = composeTestRule
|
||||||
|
.onNodeWithTag(testTag)
|
||||||
|
.assertHasClickAction()
|
||||||
|
.performClick()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import androidx.compose.ui.test.captureToImage
|
||||||
import androidx.compose.ui.test.junit4.createComposeRule
|
import androidx.compose.ui.test.junit4.createComposeRule
|
||||||
import androidx.compose.ui.test.onRoot
|
import androidx.compose.ui.test.onRoot
|
||||||
import com.karumi.shot.ScreenshotTest
|
import com.karumi.shot.ScreenshotTest
|
||||||
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
|
import dev.msfjarvis.lobsters.ui.DarkTestTheme
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ class LobstersItemTest : ScreenshotTest {
|
||||||
@Test
|
@Test
|
||||||
fun postsAreRenderedCorrectlyOnScreen() {
|
fun postsAreRenderedCorrectlyOnScreen() {
|
||||||
composeTestRule.setContent {
|
composeTestRule.setContent {
|
||||||
LobstersTheme {
|
DarkTestTheme {
|
||||||
LobstersItem(
|
LobstersItem(
|
||||||
post = TEST_POST,
|
post = TEST_POST,
|
||||||
onClick = { /*TODO*/ },
|
onClick = { /*TODO*/ },
|
||||||
|
|
|
@ -100,6 +100,7 @@ fun LobstersBottomNav(
|
||||||
},
|
},
|
||||||
label = { Text(stringResource(id = screen.labelRes)) },
|
label = { Text(stringResource(id = screen.labelRes)) },
|
||||||
selected = currentDestination == screen,
|
selected = currentDestination == screen,
|
||||||
|
modifier = Modifier.testTag(screen.name),
|
||||||
alwaysShowLabel = false,
|
alwaysShowLabel = false,
|
||||||
onClick = {
|
onClick = {
|
||||||
if (screen != currentDestination) {
|
if (screen != currentDestination) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue