Add test.
This commit is contained in:
parent
f85239518c
commit
6ad8a63e36
1 changed files with 26 additions and 2 deletions
|
|
@ -16,6 +16,7 @@ import io.element.android.features.lockscreen.impl.pin.DefaultPinCodeManagerCall
|
||||||
import io.element.android.features.lockscreen.impl.pin.PinCodeManager
|
import io.element.android.features.lockscreen.impl.pin.PinCodeManager
|
||||||
import io.element.android.features.lockscreen.impl.pin.model.PinEntry
|
import io.element.android.features.lockscreen.impl.pin.model.PinEntry
|
||||||
import io.element.android.features.lockscreen.impl.pin.model.assertText
|
import io.element.android.features.lockscreen.impl.pin.model.assertText
|
||||||
|
import io.element.android.features.lockscreen.impl.pin.storage.InMemoryLockScreenStore
|
||||||
import io.element.android.features.lockscreen.impl.unlock.keypad.PinKeypadModel
|
import io.element.android.features.lockscreen.impl.unlock.keypad.PinKeypadModel
|
||||||
import io.element.android.features.logout.test.FakeLogoutUseCase
|
import io.element.android.features.logout.test.FakeLogoutUseCase
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
|
|
@ -124,6 +125,28 @@ class PinUnlockPresenterTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - pin is configured, but deleted in store, sign out prompt will be shown`() = runTest {
|
||||||
|
val lockScreenStore = InMemoryLockScreenStore()
|
||||||
|
val pinCodeManager = aPinCodeManager(
|
||||||
|
lockScreenStore = lockScreenStore,
|
||||||
|
)
|
||||||
|
val presenter = createPinUnlockPresenter(
|
||||||
|
pinCodeManager = pinCodeManager,
|
||||||
|
)
|
||||||
|
// Delete the pin code from the store
|
||||||
|
lockScreenStore.deleteEncryptedPinCode()
|
||||||
|
presenter.test {
|
||||||
|
skipItems(1)
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.pinEntry).isInstanceOf(AsyncData.Failure::class.java)
|
||||||
|
assertThat(state.showSignOutPrompt).isTrue()
|
||||||
|
assertThat(state.isSignOutPromptCancellable).isFalse()
|
||||||
|
assertThat(state.remainingAttempts.dataOrNull()).isEqualTo(3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun AsyncData<PinEntry>.assertText(text: String) {
|
private fun AsyncData<PinEntry>.assertText(text: String) {
|
||||||
dataOrNull()?.assertText(text)
|
dataOrNull()?.assertText(text)
|
||||||
}
|
}
|
||||||
|
|
@ -131,9 +154,10 @@ class PinUnlockPresenterTest {
|
||||||
private suspend fun TestScope.createPinUnlockPresenter(
|
private suspend fun TestScope.createPinUnlockPresenter(
|
||||||
biometricAuthenticatorManager: BiometricAuthenticatorManager = FakeBiometricAuthenticatorManager(),
|
biometricAuthenticatorManager: BiometricAuthenticatorManager = FakeBiometricAuthenticatorManager(),
|
||||||
callback: PinCodeManager.Callback = DefaultPinCodeManagerCallback(),
|
callback: PinCodeManager.Callback = DefaultPinCodeManagerCallback(),
|
||||||
logoutUseCase: FakeLogoutUseCase = FakeLogoutUseCase(logoutLambda = { "" }),
|
logoutUseCase: FakeLogoutUseCase = FakeLogoutUseCase(logoutLambda = {}),
|
||||||
|
pinCodeManager: PinCodeManager = aPinCodeManager()
|
||||||
): PinUnlockPresenter {
|
): PinUnlockPresenter {
|
||||||
val pinCodeManager = aPinCodeManager().apply {
|
pinCodeManager.apply {
|
||||||
addCallback(callback)
|
addCallback(callback)
|
||||||
createPinCode(completePin)
|
createPinCode(completePin)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue