diff options
| author | saber safavi <saber.safavi@codic.se> | 2023-10-03 12:57:45 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-10-11 10:37:47 +0200 |
| commit | 746f9336b447357029a4bcf4471d50d4db1dcc8c (patch) | |
| tree | ae6bf5d31eb61f6f6cdc038254aa3431ab1bffec /android/app/src/test | |
| parent | fd3d62d603911c3521791a70f7b36bd20498d295 (diff) | |
| download | mullvadvpn-746f9336b447357029a4bcf4471d50d4db1dcc8c.tar.xz mullvadvpn-746f9336b447357029a4bcf4471d50d4db1dcc8c.zip | |
Add test for dialog
Diffstat (limited to 'android/app/src/test')
| -rw-r--r-- | android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt | 71 |
1 files changed, 71 insertions, 0 deletions
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 new file mode 100644 index 0000000000..1c6240ba76 --- /dev/null +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VoucherDialogViewModelTest.kt @@ -0,0 +1,71 @@ +package net.mullvad.mullvadvpn.viewmodel + +import android.content.res.Resources +import io.mockk.coEvery +import io.mockk.coVerify +import io.mockk.every +import io.mockk.mockk +import io.mockk.mockkStatic +import io.mockk.unmockkAll +import kotlinx.coroutines.test.runTest +import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule +import net.mullvad.mullvadvpn.model.VoucherSubmissionError +import net.mullvad.mullvadvpn.model.VoucherSubmissionResult +import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionContainer +import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager +import net.mullvad.mullvadvpn.ui.serviceconnection.VoucherRedeemer +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +class VoucherDialogViewModelTest { + @get:Rule val testCoroutineRule = TestCoroutineRule() + + private val mockServiceConnectionManager: ServiceConnectionManager = mockk() + private val mockVoucherRedeemer: VoucherRedeemer = mockk() + private val mockServiceConnectionContainer: ServiceConnectionContainer = mockk() + private val mockResources: Resources = mockk() + + private val mockVoucherSubmissionErrorResult: VoucherSubmissionResult = + VoucherSubmissionResult.Error(VoucherSubmissionError.OtherError) + + private lateinit var viewModel: VoucherDialogViewModel + + @Before + fun setUp() { + mockkStatic(CACHE_EXTENSION_CLASS) + every { mockServiceConnectionManager.connectionState.value.readyContainer() } returns + mockServiceConnectionContainer + every { mockServiceConnectionContainer.voucherRedeemer } returns mockVoucherRedeemer + + viewModel = + VoucherDialogViewModel( + serviceConnectionManager = mockServiceConnectionManager, + resources = mockResources + ) + } + + @After + fun tearDown() { + unmockkAll() + } + + @Test + fun test_submit_invalid_voucher() = runTest { + val voucher = DUMMY_VALID_VOUCHER + val dummyStringResource = DUMMY_STRING_RESOURCE + // Arrange + every { mockResources.getString(any()) } returns dummyStringResource + coEvery { mockVoucherRedeemer.submit(voucher) } returns mockVoucherSubmissionErrorResult + // Act, Assert + viewModel.onRedeem(voucher) + coVerify(exactly = 1) { mockVoucherRedeemer.submit(voucher) } + } + + companion object { + private const val CACHE_EXTENSION_CLASS = "net.mullvad.mullvadvpn.util.CacheExtensionsKt" + private const val DUMMY_VALID_VOUCHER = "DUMMY_VALID_VOUCHER" + private const val DUMMY_STRING_RESOURCE = "DUMMY_STRING_RESOURCE" + } +} |
