test: add more bottom nav tests

Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
This commit is contained in:
Aditya Wasan 2021-02-27 23:24:59 +05:30
parent 9185c0e36b
commit 9a79f3ba40
No known key found for this signature in database
GPG key ID: 6D6DF3BF15DE79B5
7 changed files with 58 additions and 3 deletions

View 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,
)
}

View file

@ -1,10 +1,18 @@
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.test.assertHasClickAction
import androidx.compose.ui.test.captureToImage
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.performClick
import com.karumi.shot.ScreenshotTest
import dev.msfjarvis.lobsters.ui.DarkTestTheme
import dev.msfjarvis.lobsters.ui.main.LobstersBottomNav
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
import org.junit.Rule
@ -18,7 +26,7 @@ class LobstersBottomNavTest : ScreenshotTest {
@Test
fun bottomNavIsRenderedCorrectlyOnScreen() {
composeTestRule.setContent {
LobstersTheme {
DarkTestTheme {
LobstersBottomNav(
currentDestination = Destination.startDestination,
navigateToDestination = { /*TODO*/ },
@ -29,4 +37,28 @@ class LobstersBottomNavTest : ScreenshotTest {
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()
}

View file

@ -5,7 +5,7 @@ import androidx.compose.ui.test.captureToImage
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onRoot
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.Test
@ -17,7 +17,7 @@ class LobstersItemTest : ScreenshotTest {
@Test
fun postsAreRenderedCorrectlyOnScreen() {
composeTestRule.setContent {
LobstersTheme {
DarkTestTheme {
LobstersItem(
post = TEST_POST,
onClick = { /*TODO*/ },

View file

@ -100,6 +100,7 @@ fun LobstersBottomNav(
},
label = { Text(stringResource(id = screen.labelRes)) },
selected = currentDestination == screen,
modifier = Modifier.testTag(screen.name),
alwaysShowLabel = false,
onClick = {
if (screen != currentDestination) {