summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-01-04 15:49:28 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-01-04 15:49:28 +0100
commitd081fab3bd95b306b432fce38c926db37f7d68b6 (patch)
treec24c44f5238d5d398b4b3c0fc5c12a768d11ad7f /android/app/src
parentaa98204d5e3ab402b9006ca2ddffb33397739ec0 (diff)
parent57d3634c3e5e76d8d541732721b92a6ae27c9079 (diff)
downloadmullvadvpn-d081fab3bd95b306b432fce38c926db37f7d68b6.tar.xz
mullvadvpn-d081fab3bd95b306b432fce38c926db37f7d68b6.zip
Merge branch 'voucher-error-not-removed-when-changing-input-droid-545'
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModel.kt2
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt25
2 files changed, 27 insertions, 0 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModel.kt
index 0cc55b992c..b26429f18b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModel.kt
@@ -66,6 +66,8 @@ class VoucherDialogViewModel(
}
fun onVoucherInputChange(voucherString: String) {
+ // Remove any errors when the user starts typing again
+ vmState.update { VoucherDialogState.Default }
if (VoucherRegexHelper.validate(voucherString)) {
val trimmedVoucher = VoucherRegexHelper.trim(voucherString)
voucherInput.value =
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt
index 01ce6659cb..bfa068a381 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt
@@ -122,6 +122,31 @@ class VoucherDialogViewModelTest {
}
}
+ @Test
+ fun testResetStateAfterChangingInput() = runTest {
+ val voucher = DUMMY_INVALID_VOUCHER
+ val dummyStringResource = DUMMY_STRING_RESOURCE
+
+ // Arrange
+ every { mockServiceConnectionManager.voucherRedeemer() } returns mockVoucherRedeemer
+ every { mockResources.getString(any()) } returns dummyStringResource
+ every { mockVoucherSubmission.timeAdded } returns 0
+ coEvery { mockVoucherRedeemer.submit(voucher) } returns
+ VoucherSubmissionResult.Error(VoucherSubmissionError.OtherError)
+
+ // Act, Assert
+ viewModel.uiState.test {
+ assertEquals(viewModel.uiState.value, awaitItem())
+ serviceConnectionState.value =
+ ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
+ viewModel.onRedeem(voucher)
+ assertTrue { awaitItem().voucherViewModelState is VoucherDialogState.Verifying }
+ assertTrue { awaitItem().voucherViewModelState is VoucherDialogState.Error }
+ viewModel.onVoucherInputChange(DUMMY_VALID_VOUCHER)
+ assertTrue { awaitItem().voucherViewModelState is VoucherDialogState.Default }
+ }
+ }
+
companion object {
private const val DUMMY_VALID_VOUCHER = "dummy_valid_voucher"
private const val DUMMY_INVALID_VOUCHER = "dummy_invalid_voucher"