secant-android-wallet/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/seed/view/SeedViewTest.kt

87 lines
2.6 KiB
Kotlin

package co.electriccoin.zcash.ui.screen.seed.view
import androidx.compose.ui.test.junit4.ComposeContentTestRule
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performScrollTo
import androidx.test.filters.MediumTest
import cash.z.ecc.sdk.fixture.PersistableWalletFixture
import co.electriccoin.zcash.ui.R
import co.electriccoin.zcash.ui.design.theme.ZcashTheme
import co.electriccoin.zcash.ui.test.getStringResource
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
import java.util.concurrent.atomic.AtomicInteger
@OptIn(ExperimentalCoroutinesApi::class)
class SeedViewTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
@MediumTest
fun back() = runTest {
val testSetup = TestSetup(composeTestRule)
assertEquals(0, testSetup.getOnBackCount())
composeTestRule.onNodeWithContentDescription(getStringResource(R.string.seed_back_content_description)).also {
it.performClick()
}
assertEquals(1, testSetup.getOnBackCount())
}
@Test
@MediumTest
fun copyToClipboard() = runTest {
val testSetup = TestSetup(composeTestRule)
assertEquals(0, testSetup.getCopyToClipboardCount())
composeTestRule.onNodeWithText(getStringResource(R.string.seed_copy)).also {
it.performScrollTo()
it.performClick()
}
assertEquals(1, testSetup.getCopyToClipboardCount())
}
private class TestSetup(private val composeTestRule: ComposeContentTestRule) {
private val onBackCount = AtomicInteger(0)
private val onCopyToClipboardCount = AtomicInteger(0)
fun getOnBackCount(): Int {
composeTestRule.waitForIdle()
return onBackCount.get()
}
fun getCopyToClipboardCount(): Int {
composeTestRule.waitForIdle()
return onCopyToClipboardCount.get()
}
init {
composeTestRule.setContent {
ZcashTheme {
Seed(
PersistableWalletFixture.new(),
onBack = {
onBackCount.incrementAndGet()
},
onCopyToClipboard = {
onCopyToClipboardCount.incrementAndGet()
}
)
}
}
}
}
}