unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
79 lines • 2.57 kB
JavaScript
import dbInit from '../../../../test/e2e/helpers/database-init.js';
import getLogger from '../../../../test/fixtures/no-logger.js';
import { DEFAULT_ENV } from '../../../server-impl.js';
let db;
let largestResourcesReadModel;
let featureToggleStore;
let featureStrategiesStore;
beforeAll(async () => {
db = await dbInit('largest_resources_read_model', getLogger);
featureToggleStore = db.stores.featureToggleStore;
featureStrategiesStore = db.stores.featureStrategiesStore;
largestResourcesReadModel = db.stores.largestResourcesReadModel;
});
afterAll(async () => {
if (db) {
await db.destroy();
}
});
beforeEach(async () => {
await featureToggleStore.deleteAll();
});
const createFeature = async (config) => {
await featureToggleStore.create('default', {
name: config.featureName,
createdByUserId: 9999,
});
await featureStrategiesStore.createStrategyFeatureEnv({
strategyName: 'flexibleRollout',
projectId: 'default',
environment: DEFAULT_ENV,
featureName: config.featureName,
constraints: config.constraints,
parameters: config.parameters,
variants: config.variants,
});
};
test('can calculate resource size', async () => {
await createFeature({
featureName: 'featureA',
parameters: {
groupId: 'flag_init_test_1',
rollout: '25',
stickiness: 'default',
},
constraints: [
{
contextName: 'clientId',
operator: 'IN',
values: ['1', '2', '3', '4', '5', '6'],
caseInsensitive: false,
inverted: false,
},
],
variants: [
{
name: 'a',
weight: 1000,
weightType: 'fix',
stickiness: 'default',
},
],
});
await createFeature({
featureName: 'featureB',
parameters: {
groupId: 'featureB',
rollout: '100',
stickiness: 'default',
},
constraints: [],
variants: [],
});
const [project] = await largestResourcesReadModel.getLargestProjectEnvironments(1);
const [feature1, feature2] = await largestResourcesReadModel.getLargestFeatureEnvironments(2);
expect(project.size).toBeGreaterThan(400);
expect(project.size).toBe(feature1.size + feature2.size);
expect(feature1.size).toBeGreaterThan(feature2.size);
});
//# sourceMappingURL=largest-resources-read-model.test.js.map