Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions packages/experiment-browser/src/experimentClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,15 @@ export class ExperimentClient implements Client {
return { ...this.secondaryVariants(), ...this.sourceVariants() };
}

/**
* Clear the flag configs in storage.
*
*/
Comment thread
yuhao900914 marked this conversation as resolved.
public clear(): void {
this.storage.clear();
this.storage.save();
}

/**
* Get a copy of the internal {@link ExperimentUser} object if it is set.
*
Expand Down
2 changes: 2 additions & 0 deletions packages/experiment-browser/src/stubClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,7 @@ export class StubExperimentClient implements Client {
return {};
}

public clear(): void {}

public exposure(key: string): void {}
}
1 change: 1 addition & 0 deletions packages/experiment-browser/src/types/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export interface Client {
fetch(user?: ExperimentUser): Promise<Client>;
variant(key: string, fallback?: string | Variant): Variant;
all(): Variants;
clear(): void;
exposure(key: string): void;
getUser(): ExperimentUser;
setUser(user: ExperimentUser): void;
Expand Down
13 changes: 13 additions & 0 deletions packages/experiment-browser/test/client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down