unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
120 lines • 5.15 kB
JavaScript
import { advancedPlaygroundViewModel, playgroundViewModel, } from './playground-view-model.js';
describe('playground result to view model', () => {
it('adds edit links to playground models', () => {
const input = {
environment: 'development',
projects: '*',
context: { appName: 'playground', userId: '1' },
};
const featureResult = {
isEnabled: false,
isEnabledInCurrentEnvironment: false,
strategies: {
result: false,
data: [
{
name: 'flexibleRollout',
id: 'ea2c22c1-07fc-4cbe-934d-ffff57cd774b',
disabled: false,
parameters: {
groupId: 'test-playground',
rollout: '32',
stickiness: 'default',
},
result: {
enabled: false,
evaluationStatus: 'complete',
},
constraints: [],
segments: [],
},
],
},
projectId: 'default',
variant: {
name: 'disabled',
enabled: false,
},
name: 'test-playground',
variants: [],
};
const viewModel = playgroundViewModel(input, [featureResult]);
const transformedStrategy = viewModel.features[0].strategies.data[0];
// check that we're adding links correctly
expect(transformedStrategy).toMatchObject({
links: {
edit: expect.stringMatching(`/projects/${featureResult.projectId}/features/${featureResult.name}/strategies/edit?`) &&
expect.stringMatching(`environmentId=development`) &&
expect.stringMatching(`strategyId=${transformedStrategy.id}`),
},
});
// check that we're not changing anything else
expect(viewModel).toMatchObject({ input, features: [featureResult] });
});
it('adds edit links to advanced playground models', () => {
const input = {
environments: ['development'],
projects: '*',
context: { appName: 'playground', userId: '1' },
};
const featureResult = {
name: 'test-playground',
projectId: 'default',
environments: {
development: [
{
isEnabled: false,
isEnabledInCurrentEnvironment: true,
strategies: {
result: false,
data: [
{
name: 'flexibleRollout',
id: '2a7dfda6-acf1-4e53-8813-6559e8bd66b0',
disabled: false,
parameters: {
groupId: 'test-playground',
rollout: '50',
stickiness: 'default',
},
result: {
enabled: false,
evaluationStatus: 'complete',
},
constraints: [],
segments: [],
},
],
},
projectId: 'default',
variant: {
name: 'disabled',
enabled: false,
},
name: 'test-playground',
environment: 'development',
context: {
appName: 'playground',
userId: '1',
},
variants: [],
},
],
},
};
const viewModel = advancedPlaygroundViewModel(input, [featureResult]);
const transformedStrategy = viewModel.features[0].environments.development[0].strategies
.data[0];
// ensure that we're adding the required data
expect(transformedStrategy).toMatchObject({
links: {
edit: expect.stringMatching(`/projects/${featureResult.projectId}/features/${featureResult.name}/strategies/edit?`) &&
expect.stringMatching(`environmentId=development`) &&
expect.stringMatching(`strategyId=${transformedStrategy.id}`),
},
});
// check that we're not changing anything else
expect(viewModel).toMatchObject({ input, features: [featureResult] });
});
});
//# sourceMappingURL=playground-view-model.test.js.map