unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
143 lines • 3.47 kB
JavaScript
import { collapseHourlyMetrics } from './collapseHourlyMetrics.js';
import { addMinutes, startOfHour } from 'date-fns';
test('collapseHourlyMetrics', () => {
const timestamp = startOfHour(new Date());
const metricAX1 = {
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 1),
yes: 1,
no: 11,
};
const metricAX2 = {
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 2),
yes: 2,
no: 12,
};
const metricBX = {
featureName: 'b',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 3),
yes: 101,
no: 1001,
};
const metricBY = {
featureName: 'b',
appName: 'y',
environment: 'y',
timestamp: addMinutes(timestamp, 4),
yes: 102,
no: 1002,
};
expect(collapseHourlyMetrics([metricAX1, metricAX2, metricBX, metricBY])).toEqual([
{
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp,
yes: 3,
no: 23,
},
{
featureName: 'b',
appName: 'x',
environment: 'x',
timestamp,
yes: 101,
no: 1001,
},
{
featureName: 'b',
appName: 'y',
environment: 'y',
timestamp,
yes: 102,
no: 1002,
},
]);
expect(collapseHourlyMetrics([
metricAX1,
metricAX1,
metricAX2,
metricAX2,
metricBX,
metricBX,
metricBY,
metricBY,
])).toEqual([
{
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp,
yes: 6,
no: 46,
},
{
featureName: 'b',
appName: 'x',
environment: 'x',
timestamp,
yes: 202,
no: 2002,
},
{
featureName: 'b',
appName: 'y',
environment: 'y',
timestamp,
yes: 204,
no: 2004,
},
]);
});
test('collapseHourlyMetrics variants', () => {
const timestamp = startOfHour(new Date());
const metricsWithoutVariant = {
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 1),
yes: 1,
no: 11,
};
const metricsWithVariant1 = {
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 2),
yes: 2,
no: 12,
variants: { disabled: 3, red: 2 },
};
const metricsWithVariant2 = {
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp: addMinutes(timestamp, 2),
yes: 2,
no: 12,
variants: { disabled: 1, red: 3 },
};
expect(collapseHourlyMetrics([
metricsWithoutVariant,
metricsWithVariant1,
metricsWithVariant2,
])).toEqual([
{
featureName: 'a',
appName: 'x',
environment: 'x',
timestamp,
yes: 5,
no: 35,
variants: { disabled: 4, red: 5 },
},
]);
});
//# sourceMappingURL=collapseHourlyMetrics.test.js.map