Implementing David's suggestions

This commit is contained in:
ifernandezdiaz
2026-11-09 18:32:39 -03:00
parent 912b4dbd4f
commit 738bbb1e21
4 changed files with 9 additions and 32 deletions
@@ -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 }
}
@@ -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)
}
}