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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

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

Before After
Before After

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 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()
} }

View file

@ -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*/ },

View file

@ -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) {