From 989f08e4ea16471cfb88f6cfb978703afef4997a Mon Sep 17 00:00:00 2001 From: Prithpal Sooriya Date: Thu, 5 Mar 2026 14:50:41 +0000 Subject: [PATCH] test: add example failing edge case example --- .../remote-feature-flag-controller.test.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts index 2ea779a4ae9..34182498177 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts @@ -422,6 +422,44 @@ describe('RemoteFeatureFlagController', () => { }); }); + it('processed test threshold feature flag based on order', async () => { + // Test example has a Threshold = 0.380673 + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: { + ...MOCK_FLAGS_WITH_THRESHOLD, + testFlagForThreshold: [ + { + name: 'groupC', + scope: { type: 'threshold', value: 1 }, + value: 'valueC', + }, + { + name: 'groupA', + scope: { type: 'threshold', value: 0.3 }, + value: 'valueA', + }, + { + name: 'groupB', + scope: { type: 'threshold', value: 0.5 }, // We expected groupB, but always get groupC. + value: 'valueB', + }, + ], + }, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + await controller.updateRemoteFeatureFlags(); + + expect( + controller.state.remoteFeatureFlags.testFlagForThreshold, + ).toStrictEqual({ + name: 'groupB', + value: 'valueB', + }); + }); + it('preserves non-threshold feature flags unchanged', async () => { const clientConfigApiService = buildClientConfigApiService({ remoteFeatureFlags: MOCK_FLAGS_WITH_THRESHOLD,