UNPKG

@unleash/proxy

Version:
68 lines (54 loc) 1.81 kB
import EventEmitter from 'events'; import type { Context } from 'unleash-client'; import type { FeatureInterface } from 'unleash-client/lib/feature'; import type { FeatureToggleStatus, IClient, IMetrics } from '../client'; class MockClient extends EventEmitter implements IClient { public apiToken: String; public queriedContexts: Context[] = []; public toggles: FeatureToggleStatus[]; public metrics: IMetrics[] = []; constructor(toggles: FeatureToggleStatus[] = []) { super(); this.toggles = toggles; this.apiToken = 'default'; } getFeatureToggleDefinitions(): FeatureInterface[] { return this.toggles.map((t) => ({ name: t.name, strategies: [{ name: 'default', parameters: {}, constraints: [] }], enabled: t.enabled, project: 'default', stale: false, type: 'release', variants: [], impressionData: false, })); } isReady(): boolean { return false; } setUnleashApiToken(apiToken: string): void { this.apiToken = apiToken; } getAllToggles(context: Context): FeatureToggleStatus[] { this.queriedContexts.push(context); return this.toggles; } getEnabledToggles(context: Context): FeatureToggleStatus[] { this.queriedContexts.push(context); return this.toggles; } getDefinedToggles( toggleNames: string[], context: Context, ): FeatureToggleStatus[] { this.queriedContexts.push(context); return this.toggles.filter((t) => toggleNames.some((name) => name === t.name), ); } registerMetrics(metrics: IMetrics): void { this.metrics.push(metrics); } } export default MockClient;