Hook up inline autofill setting to UI (#653)

This commit is contained in:
Brian Yencho authored and Álison Fernandes committed 2024-06-20 17:08:07 +01:00
1 parent c7dad53fe4
commit ff7a015472
5 files changed
+53 -10

No files matched your search

@@ -341,6 +341,21 @@ class SettingsRepositoryTest {
assertTrue(settingsRepository.isUnlockWithPinEnabled)
}
@Test
fun `isInlineAutofillEnabled should pull from and update SettingsDiskSource`() {
val userId = "userId"
fakeAuthDiskSource.userState = MOCK_USER_STATE
assertTrue(settingsRepository.isInlineAutofillEnabled)
// Updates to the disk source change the repository value.
fakeSettingsDiskSource.isIconLoadingDisabled = false
assertFalse(settingsRepository.isUnlockWithPinEnabled)
// Updates to the repository change the disk source value
settingsRepository.isInlineAutofillEnabled = true
assertTrue(fakeSettingsDiskSource.getInlineAutofillEnabled(userId = userId)!!)
}
@Test
fun `getPullToRefreshEnabledFlow should react to changes in SettingsDiskSource`() = runTest {
val userId = "userId"
@@ -2,14 +2,25 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.autofill
import androidx.lifecycle.SavedStateHandle
import app.cash.turbine.test
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
import com.x8bit.bitwarden.ui.platform.base.util.asText
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.runs
import io.mockk.verify
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class AutoFillViewModelTest : BaseViewModelTest() {
private val settingsRepository: SettingsRepository = mockk() {
every { isInlineAutofillEnabled } returns true
every { isInlineAutofillEnabled = any() } just runs
}
@Test
fun `initial state should be correct when not set`() {
val viewModel = createViewModel(state = null)
@@ -103,16 +114,14 @@ class AutoFillViewModelTest : BaseViewModelTest() {
}
@Test
fun `on UseInlineAutofillClick should emit ShowToast`() = runTest {
fun `on UseInlineAutofillClick should update the state and save the new value to settings`() {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(AutoFillAction.UseInlineAutofillClick(true))
assertEquals(AutoFillEvent.ShowToast("Not yet implemented.".asText()), awaitItem())
}
viewModel.trySendAction(AutoFillAction.UseInlineAutofillClick(false))
assertEquals(
DEFAULT_STATE.copy(isUseInlineAutoFillEnabled = true),
DEFAULT_STATE.copy(isUseInlineAutoFillEnabled = false),
viewModel.stateFlow.value,
)
verify { settingsRepository.isInlineAutofillEnabled = false }
}
@Test
@@ -133,6 +142,7 @@ class AutoFillViewModelTest : BaseViewModelTest() {
state: AutoFillState? = DEFAULT_STATE,
): AutoFillViewModel = AutoFillViewModel(
savedStateHandle = SavedStateHandle().apply { set("state", state) },
settingsRepository = settingsRepository,
)
}
@@ -142,6 +152,6 @@ private val DEFAULT_STATE: AutoFillState = AutoFillState(
isCopyTotpAutomaticallyEnabled = false,
isUseAccessibilityEnabled = false,
isUseDrawOverEnabled = false,
isUseInlineAutoFillEnabled = false,
isUseInlineAutoFillEnabled = true,
uriDetectionMethod = AutoFillState.UriDetectionMethod.DEFAULT,
)