From 6f56d5ab462d6bb8756afc4e5d5db6f020f208b4 Mon Sep 17 00:00:00 2001 From: yuhao900914 Date: Thu, 13 Oct 2022 23:36:00 -0700 Subject: [PATCH 1/3] feat: add clear method to clear variants in storage --- packages/experiment-browser/src/experimentClient.ts | 9 +++++++++ packages/experiment-browser/src/stubClient.ts | 2 ++ packages/experiment-browser/src/types/client.ts | 1 + packages/experiment-browser/test/client.test.ts | 13 +++++++++++++ 4 files changed, 25 insertions(+) diff --git a/packages/experiment-browser/src/experimentClient.ts b/packages/experiment-browser/src/experimentClient.ts index 720e26de..cc49389a 100644 --- a/packages/experiment-browser/src/experimentClient.ts +++ b/packages/experiment-browser/src/experimentClient.ts @@ -182,6 +182,15 @@ export class ExperimentClient implements Client { return { ...this.secondaryVariants(), ...this.sourceVariants() }; } + /** + * Clear the flag configs in storage. + * + */ + public clear(): void { + this.storage.clear(); + this.storage.save(); + } + /** * Get a copy of the internal {@link ExperimentUser} object if it is set. * diff --git a/packages/experiment-browser/src/stubClient.ts b/packages/experiment-browser/src/stubClient.ts index eb9973d2..cc167360 100644 --- a/packages/experiment-browser/src/stubClient.ts +++ b/packages/experiment-browser/src/stubClient.ts @@ -38,5 +38,7 @@ export class StubExperimentClient implements Client { return {}; } + public clear(): void {} + public exposure(key: string): void {} } diff --git a/packages/experiment-browser/src/types/client.ts b/packages/experiment-browser/src/types/client.ts index 2f2589c4..7a8603ba 100644 --- a/packages/experiment-browser/src/types/client.ts +++ b/packages/experiment-browser/src/types/client.ts @@ -10,6 +10,7 @@ export interface Client { fetch(user?: ExperimentUser): Promise; variant(key: string, fallback?: string | Variant): Variant; all(): Variants; + clear(): void; exposure(key: string): void; getUser(): ExperimentUser; setUser(user: ExperimentUser): void; diff --git a/packages/experiment-browser/test/client.test.ts b/packages/experiment-browser/test/client.test.ts index 0c40736d..de19e19d 100644 --- a/packages/experiment-browser/test/client.test.ts +++ b/packages/experiment-browser/test/client.test.ts @@ -162,6 +162,19 @@ test('ExperimentClient.all, initial variants returned', async () => { expect(variants).toEqual(initialVariants); }); +/** + * Call clear() to clear the flag configs in storage.. + */ + test('ExperimentClient.clear, clear the variants in storage', async () => { + const client = new ExperimentClient(API_KEY, {}); + await client.fetch(testUser); + const variant = client.variant('sdk-ci-test'); + expect(variant).toEqual({ value: 'on', payload: 'payload' }); + client.clear(); + const clearedVariants = client.all(); + expect(clearedVariants).toEqual({}); +}); + /** * Setting source to initial variants will prioritize variants in initial * variants over those stored in local storage. From 0c4cdeae91abae44e05e614b654f6fc2421205d5 Mon Sep 17 00:00:00 2001 From: yuhao900914 Date: Fri, 14 Oct 2022 17:02:22 -0700 Subject: [PATCH 2/3] fix: nits --- packages/experiment-browser/test/client.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/experiment-browser/test/client.test.ts b/packages/experiment-browser/test/client.test.ts index de19e19d..63e832e3 100644 --- a/packages/experiment-browser/test/client.test.ts +++ b/packages/experiment-browser/test/client.test.ts @@ -165,7 +165,7 @@ test('ExperimentClient.all, initial variants returned', async () => { /** * Call clear() to clear the flag configs in storage.. */ - test('ExperimentClient.clear, clear the variants in storage', async () => { +test('ExperimentClient.clear, clear the variants in storage', async () => { const client = new ExperimentClient(API_KEY, {}); await client.fetch(testUser); const variant = client.variant('sdk-ci-test'); From 70428c7d3cf68ba89f076e1139e4b06e8ab847f4 Mon Sep 17 00:00:00 2001 From: yuhao900914 Date: Mon, 17 Oct 2022 17:42:44 -0700 Subject: [PATCH 3/3] fix: fix comments --- packages/experiment-browser/src/experimentClient.ts | 2 +- packages/experiment-browser/test/client.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/experiment-browser/src/experimentClient.ts b/packages/experiment-browser/src/experimentClient.ts index cc49389a..e2e3b9ad 100644 --- a/packages/experiment-browser/src/experimentClient.ts +++ b/packages/experiment-browser/src/experimentClient.ts @@ -183,7 +183,7 @@ export class ExperimentClient implements Client { } /** - * Clear the flag configs in storage. + * Clear all variants in the cache and storage. * */ public clear(): void { diff --git a/packages/experiment-browser/test/client.test.ts b/packages/experiment-browser/test/client.test.ts index 63e832e3..ce50ea31 100644 --- a/packages/experiment-browser/test/client.test.ts +++ b/packages/experiment-browser/test/client.test.ts @@ -163,7 +163,7 @@ test('ExperimentClient.all, initial variants returned', async () => { }); /** - * Call clear() to clear the flag configs in storage.. + * Call clear() to clear all variants in the cache and storage. */ test('ExperimentClient.clear, clear the variants in storage', async () => { const client = new ExperimentClient(API_KEY, {});