From 28bffa5f91278db0e1f4b4361d483403b626e2b9 Mon Sep 17 00:00:00 2001 From: Roman Dmytrenko Date: Wed, 4 Sep 2024 21:31:01 +0300 Subject: [PATCH] fix(flipt): return the correct default value when provided in Flipt (#1052) Signed-off-by: Roman Dmytrenko --- .../flipt/src/lib/flipt-provider.spec.ts | 21 +++++++++++++++++++ .../providers/flipt/src/lib/flipt-provider.ts | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libs/providers/flipt/src/lib/flipt-provider.spec.ts b/libs/providers/flipt/src/lib/flipt-provider.spec.ts index cf59da7bb..c9d49fbff 100644 --- a/libs/providers/flipt/src/lib/flipt-provider.spec.ts +++ b/libs/providers/flipt/src/lib/flipt-provider.spec.ts @@ -193,6 +193,27 @@ describe('FliptProvider', () => { expect(value).toHaveProperty('value', { hello: 'world' }); }); + it('should return right value for default value', async () => { + fetchMock.post( + variantEndpoint, + { + match: false, + segmentKeys: [], + reason: 'DEFAULT_EVALUATION_REASON', + variantKey: '10', + variantAttachment: `{"hello": "world"}`, + requestId: '0f39483c-d52b-42b4-adbb-40b98bc7058d', + requestDurationMillis: 0.409, + timestamp: '2024-01-15T18:51:50.629551Z', + flagKey: 'flag_json', + }, + { overwriteRoutes: true }, + ); + + const value = await provider.resolveObjectEvaluation('flag_json', {}, { fizz: 'buzz' }); + expect(value).toHaveProperty('value', { hello: 'world' }); + }); + it('should throw TypeMismatchError on non-number value', async () => { fetchMock.post( variantEndpoint, diff --git a/libs/providers/flipt/src/lib/flipt-provider.ts b/libs/providers/flipt/src/lib/flipt-provider.ts index ae9b563f8..cf0d051ef 100644 --- a/libs/providers/flipt/src/lib/flipt-provider.ts +++ b/libs/providers/flipt/src/lib/flipt-provider.ts @@ -169,7 +169,7 @@ export class FliptProvider implements Provider { }; } - if (!variantEvaluation.match) { + if (!variantEvaluation.match && variantEvaluation.reason != 'DEFAULT_EVALUATION_REASON') { return { value: defaultValue, reason: StandardResolutionReasons.DEFAULT,