UNPKG

unleash-server

Version:

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

149 lines • 4.86 kB
import { subDays } from 'date-fns'; import { calculateProjectHealth, calculateHealthRating, } from './project-health.js'; const exampleFeatureTypes = [ { id: 'default', name: 'Default', description: '', lifetimeDays: 30, }, { id: 'short-lived', name: 'Short lived', description: '', lifetimeDays: 7, }, { id: 'non-expiring', name: 'Long lived', description: '', lifetimeDays: null, }, ]; describe('calculateProjectHealth', () => { it('works with empty features', () => { expect(calculateProjectHealth([], exampleFeatureTypes)).toEqual({ activeCount: 0, staleCount: 0, potentiallyStaleCount: 0, }); }); it('counts active flags', () => { const features = [{ stale: false }, {}]; expect(calculateProjectHealth(features, exampleFeatureTypes)).toEqual({ activeCount: 2, staleCount: 0, potentiallyStaleCount: 0, }); }); it('counts stale flags', () => { const features = [{ stale: true }, { stale: false }, {}]; expect(calculateProjectHealth(features, exampleFeatureTypes)).toEqual({ activeCount: 2, staleCount: 1, potentiallyStaleCount: 0, }); }); it('takes feature type into account when calculating potentially stale flags', () => { expect(calculateProjectHealth([ { stale: false, createdAt: subDays(Date.now(), 15), type: 'default', }, ], exampleFeatureTypes)).toEqual({ activeCount: 1, staleCount: 0, potentiallyStaleCount: 0, }); expect(calculateProjectHealth([ { stale: false, createdAt: subDays(Date.now(), 31), type: 'default', }, ], exampleFeatureTypes)).toEqual({ activeCount: 1, staleCount: 0, potentiallyStaleCount: 1, }); expect(calculateProjectHealth([ { stale: false, createdAt: subDays(Date.now(), 15), type: 'short-lived', }, ], exampleFeatureTypes)).toEqual({ activeCount: 1, staleCount: 0, potentiallyStaleCount: 1, }); }); it("doesn't count stale flags as potentially stale or stale as active", () => { const features = [ { stale: true, createdAt: subDays(Date.now(), 31), type: 'default', }, { stale: false, createdAt: subDays(Date.now(), 31), type: 'default', }, ]; expect(calculateProjectHealth(features, exampleFeatureTypes)).toEqual({ activeCount: 1, staleCount: 1, potentiallyStaleCount: 1, }); }); it('counts non-expiring types properly', () => { const features = [ { createdAt: subDays(Date.now(), 366), type: 'non-expiring', }, { createdAt: subDays(Date.now(), 366), type: 'default', }, ]; expect(calculateProjectHealth(features, exampleFeatureTypes)).toEqual({ activeCount: 2, staleCount: 0, potentiallyStaleCount: 1, }); }); }); describe('calculateHealthRating', () => { it('works with empty feature flags', () => { expect(calculateHealthRating([], exampleFeatureTypes)).toEqual(100); }); it('works with stale and active feature flags', () => { expect(calculateHealthRating([{ stale: true }, { stale: true }], exampleFeatureTypes)).toEqual(0); expect(calculateHealthRating([{ stale: true }, { stale: false }], exampleFeatureTypes)).toEqual(50); expect(calculateHealthRating([{ stale: false }, { stale: true }, { stale: false }], exampleFeatureTypes)).toEqual(67); }); it('counts potentially stale flags', () => { expect(calculateHealthRating([ { createdAt: subDays(Date.now(), 1), type: 'default' }, { stale: true, createdAt: subDays(Date.now(), 1), type: 'default', }, { stale: true, createdAt: subDays(Date.now(), 31), type: 'default', }, { stale: false, createdAt: subDays(Date.now(), 31), type: 'default', }, ], exampleFeatureTypes)).toEqual(25); }); }); //# sourceMappingURL=project-health.test.js.map