diff options
| author | Albin <albin@mullvad.net> | 2022-11-18 10:41:10 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-11-18 10:41:10 +0100 |
| commit | 0c2399a4c77db5707b022588b1e1b75aa8c4d483 (patch) | |
| tree | 2b4af5f4fca2cf46ed3cf5060e17786dfe27efd7 /android/app/src/test | |
| parent | 499c06decda37dc639e5f944f98eff422a7e6131 (diff) | |
| parent | 678c2abac8641416cb34e389965525f8f78ab945 (diff) | |
| download | mullvadvpn-0c2399a4c77db5707b022588b1e1b75aa8c4d483.tar.xz mullvadvpn-0c2399a4c77db5707b022588b1e1b75aa8c4d483.zip | |
Merge branch 'show-changes-after-upgrade'
Diffstat (limited to 'android/app/src/test')
| -rw-r--r-- | android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModelTest.kt | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModelTest.kt new file mode 100644 index 0000000000..eafac23bfc --- /dev/null +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModelTest.kt @@ -0,0 +1,97 @@ +package net.mullvad.mullvadvpn.viewmodel + +import app.cash.turbine.test +import io.mockk.MockKAnnotations +import io.mockk.Runs +import io.mockk.every +import io.mockk.impl.annotations.MockK +import io.mockk.just +import io.mockk.mockkStatic +import io.mockk.unmockkAll +import io.mockk.verify +import junit.framework.Assert +import kotlin.test.assertEquals +import kotlinx.coroutines.test.runBlockingTest +import net.mullvad.mullvadvpn.repository.ChangelogRepository +import org.junit.After +import org.junit.Before +import org.junit.Test + +class ChangelogViewModelTest { + + @MockK + private lateinit var mockedChangelogRepository: ChangelogRepository + + private lateinit var viewModel: ChangelogViewModel + + @Before + fun setup() { + MockKAnnotations.init(this) + mockkStatic(EVENT_NOTIFIER_EXTENSION_CLASS) + every { + mockedChangelogRepository.setVersionCodeOfMostRecentChangelogShowed(any()) + } just Runs + viewModel = ChangelogViewModel(mockedChangelogRepository, 1, false) + } + + @After + fun teardown() { + unmockkAll() + } + + @Test + fun testInitialState() = runBlockingTest { + // Arrange, Act, Assert + viewModel.changelogDialogUiState.test { + Assert.assertEquals(ChangelogDialogUiState.Hide, awaitItem()) + } + } + + @Test + fun testShowAndDismissChangelogDialog() = runBlockingTest { + viewModel.changelogDialogUiState.test { + // Arrange + val fakeList = listOf("test") + every { + mockedChangelogRepository.getVersionCodeOfMostRecentChangelogShowed() + } returns -1 + every { mockedChangelogRepository.getLastVersionChanges() } returns fakeList + + // Assert initial ui state + assertEquals(ChangelogDialogUiState.Hide, awaitItem()) + + // Refresh and verify that the dialog should be shown + viewModel.refreshChangelogDialogUiState() + assertEquals(ChangelogDialogUiState.Show(fakeList), awaitItem()) + + // Dismiss dialog and verify that the dialog should be hidden + viewModel.dismissChangelogDialog() + assertEquals(ChangelogDialogUiState.Hide, awaitItem()) + verify { mockedChangelogRepository.setVersionCodeOfMostRecentChangelogShowed(1) } + } + } + + @Test + fun testShowCaseChangelogWithEmptyListDialog() = runBlockingTest { + viewModel.changelogDialogUiState.test { + // Arrange + val fakeEmptyList = emptyList<String>() + every { + mockedChangelogRepository.getVersionCodeOfMostRecentChangelogShowed() + } returns -1 + every { mockedChangelogRepository.getLastVersionChanges() } returns fakeEmptyList + + // Assert initial ui state + assertEquals(ChangelogDialogUiState.Hide, awaitItem()) + + // Refresh and verify that the Ui state remain same due list being empty + viewModel.refreshChangelogDialogUiState() + expectNoEvents() + } + } + + companion object { + private const val EVENT_NOTIFIER_EXTENSION_CLASS = + "net.mullvad.talpid.util.EventNotifierExtensionsKt" + } +} |
