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

84 lines
3.1 KiB
Kotlin

package co.electriccoin.zcash.ui.screen.receive.view
import androidx.compose.material3.SnackbarHostState
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.test.junit4.ComposeContentTestRule
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.performClick
import cash.z.ecc.android.sdk.model.WalletAddresses
import co.electriccoin.zcash.ui.R
import co.electriccoin.zcash.ui.common.LocalScreenBrightness
import co.electriccoin.zcash.ui.common.LocalScreenTimeout
import co.electriccoin.zcash.ui.common.ScreenBrightness
import co.electriccoin.zcash.ui.common.ScreenTimeout
import co.electriccoin.zcash.ui.common.model.VersionInfo
import co.electriccoin.zcash.ui.design.theme.ZcashTheme
import co.electriccoin.zcash.ui.fixture.VersionInfoFixture
import co.electriccoin.zcash.ui.test.getStringResource
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicInteger
class ReceiveViewTestSetup(
private val composeTestRule: ComposeContentTestRule,
walletAddresses: WalletAddresses,
versionInfo: VersionInfo = VersionInfoFixture.new()
) {
private val onSettingsCount = AtomicInteger(0)
private val onAddressDetailsCount = AtomicInteger(0)
private val screenBrightness = ScreenBrightness()
private val screenTimeout = ScreenTimeout()
private val onAdjustBrightness = AtomicBoolean(false)
fun getScreenBrightnessCount() = screenBrightness.referenceCount.value
fun getScreenTimeoutCount() = screenTimeout.referenceCount.value
fun getOnAdjustBrightness(): Boolean {
composeTestRule.waitForIdle()
return onAdjustBrightness.get()
}
fun getOnSettingsCount(): Int {
composeTestRule.waitForIdle()
return onSettingsCount.get()
}
fun getOnAddressDetailsCount(): Int {
composeTestRule.waitForIdle()
return onAddressDetailsCount.get()
}
init {
composeTestRule.setContent {
CompositionLocalProvider(
LocalScreenBrightness provides screenBrightness,
LocalScreenTimeout provides screenTimeout
) {
ZcashTheme {
ZcashTheme {
Receive(
walletAddress = walletAddresses,
snackbarHostState = SnackbarHostState(),
onSettings = {
onSettingsCount.getAndIncrement()
},
onAdjustBrightness = {
onAdjustBrightness.getAndSet(it)
},
onAddrCopyToClipboard = {},
onQrImageShare = {},
versionInfo = versionInfo
)
}
}
}
}
}
}
fun ComposeContentTestRule.clickAdjustBrightness() {
onNodeWithContentDescription(getStringResource(R.string.receive_brightness_content_description)).also {
it.performClick()
}
}