UNPKG

unleash-server

Version:

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

140 lines 3.81 kB
import { calculateStability } from './api-stability.js'; const currentVersion = '7.6.0'; test.each([ { release: { beta: '7.6.5', stable: '7.7.0' }, expected: 'alpha', }, { release: { beta: '7.5.0', stable: '7.7.0' }, expected: 'beta', }, { release: { beta: '7.5.0', stable: '7.6.0' }, expected: 'stable', }, { release: { beta: '7.7', stable: '7.8' }, expected: 'alpha', }, { release: { beta: '7.6', stable: '7.8' }, expected: 'beta', }, { release: { beta: '7.4', stable: '7.6' }, expected: 'stable', }, { release: { beta: '8', stable: '9' }, expected: 'alpha', }, { release: { beta: '7', stable: '8' }, expected: 'beta', }, { release: { beta: '6', stable: '7' }, expected: 'stable', }, ])(`${currentVersion} with $release should be $expected`, ({ release, expected, }) => { expect(calculateStability(release, currentVersion)).toBe(expected); }); test.each([ { release: { beta: '7.5.0', stable: '7.7.0' }, }, { release: { beta: '7.4', stable: '7.6' }, }, { release: { beta: '6', stable: '7' }, }, ])(`defaults to stable when current version is invalid and $release`, ({ release, }) => { expect(calculateStability(release, 'invalid-current-version')).toBe('stable'); }); test(`${currentVersion} returns stable for legacy endpoints without cutoffs before the default threshold`, () => { expect(calculateStability(undefined, currentVersion)).toBe('stable'); }); test(`${currentVersion} returns alpha when both cutoffs are omitted after the default threshold`, () => { expect(calculateStability(undefined, '7.8.0')).toBe('alpha'); }); test.each([ { release: { beta: '7.7.0' }, expected: 'alpha', }, { release: { beta: '7.5.0' }, expected: 'beta', }, { release: { beta: '7.7' }, expected: 'alpha', }, { release: { beta: '7.4' }, expected: 'beta', }, { release: { beta: '8' }, expected: 'alpha', }, { release: { beta: '7' }, expected: 'beta', }, ])(`${currentVersion} returns $expected with $release`, ({ release, expected, }) => { expect(calculateStability(release, currentVersion)).toBe(expected); }); test.each([ { release: { stable: '7.7.0' }, expected: 'alpha', }, { release: { stable: '7.6.0' }, expected: 'stable', }, { release: { stable: '7.7' }, expected: 'alpha', }, { release: { stable: '7.6' }, expected: 'stable', }, { release: { stable: '8' }, expected: 'alpha', }, { release: { stable: '7' }, expected: 'stable', }, ])(`${currentVersion} returns $expected with $release`, ({ release, expected, }) => { expect(calculateStability(release, currentVersion)).toBe(expected); }); test(`${currentVersion} returns alpha when explicit alpha is set`, () => { const alphaOnly = { alpha: true, }; expect(calculateStability(alphaOnly, currentVersion)).toBe('alpha'); }); test.each([ { release: { beta: '7.6.0', stable: '7.5.0' }, expected: 'stable', }, { release: { beta: '7.6', stable: '7.5' }, expected: 'stable', }, { release: { beta: '8', stable: '7' }, expected: 'stable', }, ])(`${currentVersion} treats invalid beta/stable ordering as stable-only cutoff. $release should be $expected`, ({ release, expected, }) => { expect(calculateStability(release, currentVersion)).toBe(expected); }); //# sourceMappingURL=api-stability.test.js.map