unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
52 lines • 2.06 kB
JavaScript
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