UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

52 lines 2.06 kB
import { FrontendApiService } from './frontend-api-service.js'; import noLogger from '../../../test/fixtures/no-logger.js'; import { ApiTokenType } from '../../types/model.js'; import EventEmitter from 'events'; import { FRONTEND_API_REPOSITORY_CREATED } from '../../metric-events.js'; test('frontend api service fetching features from global cache', async () => { const irrelevant = {}; const globalFrontendApiCache = { getToggles(_) { return [ { name: 'toggleA', enabled: true, project: 'projectA', type: 'release', variants: [], strategies: [ { name: 'default', parameters: {}, constraints: [] }, ], }, { name: 'toggleB', enabled: false, project: 'projectA', type: 'release', variants: [], strategies: [ { name: 'default', parameters: {}, constraints: [] }, ], }, ]; }, getToggle(name, token) { return this.getToggles(token).find((t) => t.name === name); }, }; const eventBus = new EventEmitter(); let createdFrontendRepositoriesCount = 0; eventBus.on(FRONTEND_API_REPOSITORY_CREATED, () => { createdFrontendRepositoriesCount++; }); const frontendApiService = new FrontendApiService({ getLogger: noLogger, eventBus }, irrelevant, globalFrontendApiCache); const features = await frontendApiService.getFrontendApiFeatures({ projects: ['irrelevant'], environment: 'irrelevant', type: ApiTokenType.FRONTEND, }, {}); expect(features).toMatchObject([{ name: 'toggleA' }]); expect(features).toHaveLength(1); expect(createdFrontendRepositoriesCount).toBe(1); }); //# sourceMappingURL=frontend-api-service.test.js.map