Skip to content

Commit 70d9b14

Browse files
authored
Fix Duck.ai PoC toggle (#6162)
Task/Issue URL: https://app.asana.com/1/137249556945/project/488551667048375/task/1210411891798809?focus=true ### Description The Duck.ai experimental UI toggle always resets to false, this fixes it and adds some tests. ### Steps to test this PR - [ ] Go to experimental UI settings - [ ] Enable Duck.ai PoC - [ ] Verify that Duck.ai PoC is enabled
1 parent 9d5c371 commit 70d9b14

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

common/common-ui/src/main/java/com/duckduckgo/common/ui/experiments/visual/store/VisualDesignExperimentDataStoreImpl.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class VisualDesignExperimentDataStoreImpl @Inject constructor(
6868
private val _experimentFeatureFlagEnabled =
6969
MutableStateFlow(experimentalUIThemingFeature.self().isEnabled() && experimentalUIThemingFeature.visualUpdatesFeature().isEnabled())
7070
private val _duckAIFeatureFlagEnabled =
71-
MutableStateFlow(experimentalUIThemingFeature.self().isEnabled() && experimentalUIThemingFeature.duckAIPoCFeature().isEnabled())
71+
MutableStateFlow(_experimentFeatureFlagEnabled.value && experimentalUIThemingFeature.duckAIPoCFeature().isEnabled())
7272

7373
override val isExperimentEnabled: StateFlow<Boolean> =
7474
combine(
@@ -83,8 +83,8 @@ class VisualDesignExperimentDataStoreImpl @Inject constructor(
8383
)
8484

8585
override val isDuckAIPoCEnabled: StateFlow<Boolean> =
86-
combine(_duckAIFeatureFlagEnabled, isExperimentEnabled) { experimentEnabled, conflicts ->
87-
experimentEnabled && !conflicts
86+
combine(_duckAIFeatureFlagEnabled, isExperimentEnabled) { duckAIFeatureFlagEnabled, experimentEnabled ->
87+
duckAIFeatureFlagEnabled && experimentEnabled
8888
}.stateIn(
8989
scope = appCoroutineScope,
9090
started = SharingStarted.Eagerly,
@@ -122,7 +122,7 @@ class VisualDesignExperimentDataStoreImpl @Inject constructor(
122122
_experimentFeatureFlagEnabled.value =
123123
experimentalUIThemingFeature.self().isEnabled() && experimentalUIThemingFeature.visualUpdatesFeature().isEnabled()
124124
_duckAIFeatureFlagEnabled.value =
125-
experimentalUIThemingFeature.self().isEnabled() && experimentalUIThemingFeature.duckAIPoCFeature().isEnabled()
125+
_experimentFeatureFlagEnabled.value && experimentalUIThemingFeature.duckAIPoCFeature().isEnabled()
126126
_anyConflictingExperimentEnabled.value = isAnyConflictingExperimentEnabled()
127127
}
128128
}

common/common-ui/src/test/java/com/duckduckgo/common/ui/experiments/visual/store/VisualDesignExperimentDataStoreImplTest.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,42 @@ class VisualDesignExperimentDataStoreImplTest {
252252
Assert.assertTrue(testee.anyConflictingExperimentEnabled.value)
253253
}
254254

255+
@Test
256+
fun `when Duck AI PoC FF enabled and experiment enabled, Duck AI PoC enabled`() = runTest {
257+
whenever(togglesInventory.getAllActiveExperimentToggles()).thenReturn(emptyList())
258+
whenever(experimentalUIThemingFeatureToggle.isEnabled()).thenReturn(true)
259+
whenever(visualDesignFeatureToggle.isEnabled()).thenReturn(true)
260+
whenever(duckChatPoCToggle.isEnabled()).thenReturn(true)
261+
262+
val testee = createTestee()
263+
264+
Assert.assertTrue(testee.isDuckAIPoCEnabled.value)
265+
}
266+
267+
@Test
268+
fun `when Duck AI PoC FF enabled and experiment disabled, Duck AI PoC disabled`() = runTest {
269+
whenever(togglesInventory.getAllActiveExperimentToggles()).thenReturn(emptyList())
270+
whenever(experimentalUIThemingFeatureToggle.isEnabled()).thenReturn(false)
271+
whenever(visualDesignFeatureToggle.isEnabled()).thenReturn(false)
272+
whenever(duckChatPoCToggle.isEnabled()).thenReturn(true)
273+
274+
val testee = createTestee()
275+
276+
Assert.assertFalse(testee.isDuckAIPoCEnabled.value)
277+
}
278+
279+
@Test
280+
fun `when Duck AI PoC FF disabled but experiment enabled, Duck AI PoC disabled`() = runTest {
281+
whenever(togglesInventory.getAllActiveExperimentToggles()).thenReturn(emptyList())
282+
whenever(experimentalUIThemingFeatureToggle.isEnabled()).thenReturn(true)
283+
whenever(visualDesignFeatureToggle.isEnabled()).thenReturn(true)
284+
whenever(duckChatPoCToggle.isEnabled()).thenReturn(false)
285+
286+
val testee = createTestee()
287+
288+
Assert.assertFalse(testee.isDuckAIPoCEnabled.value)
289+
}
290+
255291
private fun createTestee(): VisualDesignExperimentDataStoreImpl {
256292
return VisualDesignExperimentDataStoreImpl(
257293
appCoroutineScope = coroutineRule.testScope,

0 commit comments

Comments
 (0)