mirror of
https://github.com/bitwarden/android.git
synced 2026-11-11 13:25:47 -06:00
Implementing David's suggestions
This commit is contained in:
+7
-10
@@ -8,8 +8,7 @@ import kotlinx.coroutines.flow.map
|
||||
/**
|
||||
* The [FeatureFlagManager] implementation for the debug menu. This manager uses the
|
||||
* values returned from the [debugMenuRepository] if they are available. otherwise it will use
|
||||
* the default [FeatureFlagManager]. [FlagKey.Vfo1Foundation] defaults to `true` when no override
|
||||
* is stored.
|
||||
* the default [FeatureFlagManager].
|
||||
*/
|
||||
class DebugMenuFeatureFlagManagerImpl(
|
||||
private val defaultFeatureFlagManager: FeatureFlagManager,
|
||||
@@ -18,23 +17,21 @@ class DebugMenuFeatureFlagManagerImpl(
|
||||
|
||||
override fun <T : Any> getFeatureFlagFlow(key: FlagKey<T>): Flow<T> {
|
||||
return debugMenuRepository.featureFlagOverridesUpdatedFlow.map { _ ->
|
||||
getOverrideOrDebugDefault(key)
|
||||
debugMenuRepository
|
||||
.getFeatureFlag(key)
|
||||
?: defaultFeatureFlagManager.getFeatureFlag(key = key)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun <T : Any> getFeatureFlag(key: FlagKey<T>, forceRefresh: Boolean): T {
|
||||
return getOverrideOrDebugDefault(key)
|
||||
return debugMenuRepository
|
||||
.getFeatureFlag(key)
|
||||
?: defaultFeatureFlagManager.getFeatureFlag(key = key, forceRefresh = forceRefresh)
|
||||
}
|
||||
|
||||
override fun <T : Any> getFeatureFlag(key: FlagKey<T>): T {
|
||||
return getOverrideOrDebugDefault(key)
|
||||
return debugMenuRepository
|
||||
.getFeatureFlag(key)
|
||||
?: defaultFeatureFlagManager.getFeatureFlag(key = key)
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private fun <T : Any> getOverrideOrDebugDefault(key: FlagKey<T>): T? =
|
||||
debugMenuRepository.getFeatureFlag(key)
|
||||
?: (true as T).takeIf { key == FlagKey.Vfo1Foundation }
|
||||
}
|
||||
|
||||
-20
@@ -13,7 +13,6 @@ 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.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@@ -110,23 +109,4 @@ class DebugMenuFeatureFlagManagerTest {
|
||||
}
|
||||
verify(exactly = 1) { mockFeatureFlagManager.getFeatureFlag(flagKey) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Vfo1Foundation defaults to true when no override exists`() {
|
||||
val flagKey = FlagKey.Vfo1Foundation
|
||||
every { mockDebugMenuRepository.getFeatureFlag(flagKey) } returns null
|
||||
every { mockFeatureFlagManager.getFeatureFlag(flagKey) } returns false
|
||||
|
||||
assertTrue(debugMenuFeatureFlagManager.getFeatureFlag(flagKey))
|
||||
|
||||
verify(exactly = 0) { mockFeatureFlagManager.getFeatureFlag(flagKey) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Vfo1Foundation returns the repository override when one exists`() {
|
||||
val flagKey = FlagKey.Vfo1Foundation
|
||||
every { mockDebugMenuRepository.getFeatureFlag(flagKey) } returns false
|
||||
|
||||
assertFalse(debugMenuFeatureFlagManager.getFeatureFlag(flagKey))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ sealed class FlagKey<out T : Any> {
|
||||
*/
|
||||
data object Vfo1Foundation : FlagKey<Boolean>() {
|
||||
override val keyName: String = "vfo1-foundation"
|
||||
override val defaultValue: Boolean = false
|
||||
override val defaultValue: Boolean = true
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -98,7 +98,6 @@ class FlagKeyTest {
|
||||
FlagKey.FillAssistTargetingRules,
|
||||
FlagKey.ManageDevices,
|
||||
FlagKey.FedRamp,
|
||||
FlagKey.Vfo1Foundation,
|
||||
FlagKey.SendControls,
|
||||
FlagKey.SendControlsExistingSends,
|
||||
FlagKey.IdentityAutofill,
|
||||
@@ -108,5 +107,6 @@ class FlagKeyTest {
|
||||
!it.defaultValue
|
||||
},
|
||||
)
|
||||
assertTrue(FlagKey.Vfo1Foundation.defaultValue)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user