mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
Refactor/project overview last seen at test (#4979)
Increase test coverage of last seen in project overview
This commit is contained in:
parent
af50fc2fd3
commit
c97bcc65e6
@ -1,12 +1,38 @@
|
|||||||
import dbInit from '../../../helpers/database-init';
|
import dbInit, { ITestDb } from '../../../helpers/database-init';
|
||||||
import { setupAppWithCustomConfig } from '../../../helpers/test-helper';
|
import {
|
||||||
|
IUnleashTest,
|
||||||
|
setupAppWithCustomConfig,
|
||||||
|
} from '../../../helpers/test-helper';
|
||||||
import getLogger from '../../../../fixtures/no-logger';
|
import getLogger from '../../../../fixtures/no-logger';
|
||||||
import ProjectStore from '../../../../../lib/db/project-store';
|
|
||||||
|
|
||||||
let app;
|
import { IProjectStore } from 'lib/types';
|
||||||
let db;
|
import { ProjectService } from 'lib/services';
|
||||||
|
|
||||||
let projectStore: ProjectStore;
|
let app: IUnleashTest;
|
||||||
|
let db: ITestDb;
|
||||||
|
|
||||||
|
let projectStore: IProjectStore;
|
||||||
|
|
||||||
|
const insertLastSeenAt = async (
|
||||||
|
featureName: string,
|
||||||
|
environment: string = 'default',
|
||||||
|
date: string = '2023-10-01 12:34:56',
|
||||||
|
) => {
|
||||||
|
await db.rawDatabase.raw(`INSERT INTO last_seen_at_metrics (feature_name, environment, last_seen_at)
|
||||||
|
VALUES ('${featureName}', '${environment}', '${date}');`);
|
||||||
|
};
|
||||||
|
|
||||||
|
const insertFeatureEnvironmentsLastSeen = async (
|
||||||
|
featureName: string,
|
||||||
|
environment: string = 'default',
|
||||||
|
date: string = '2022-05-01 12:34:56',
|
||||||
|
) => {
|
||||||
|
await db.rawDatabase.raw(`
|
||||||
|
INSERT INTO feature_environments (feature_name, environment, last_seen_at, enabled)
|
||||||
|
VALUES ('${featureName}', '${environment}', '${date}', true)
|
||||||
|
ON CONFLICT (feature_name, environment) DO UPDATE SET last_seen_at = '${date}', enabled = true;
|
||||||
|
`);
|
||||||
|
};
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
db = await dbInit('projects_api_serial', getLogger);
|
db = await dbInit('projects_api_serial', getLogger);
|
||||||
@ -35,7 +61,6 @@ test('Should ONLY return default project', async () => {
|
|||||||
name: 'test',
|
name: 'test',
|
||||||
description: '',
|
description: '',
|
||||||
mode: 'open',
|
mode: 'open',
|
||||||
defaultStickiness: 'default',
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const { body } = await app.request
|
const { body } = await app.request
|
||||||
@ -62,3 +87,103 @@ test('response for default project should include created_at', async () => {
|
|||||||
.expect(200);
|
.expect(200);
|
||||||
expect(body.createdAt).toBeDefined();
|
expect(body.createdAt).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('response should include last seen at per environment', async () => {
|
||||||
|
await app.createFeature('my-new-feature-toggle');
|
||||||
|
|
||||||
|
await insertLastSeenAt('my-new-feature-toggle', 'default');
|
||||||
|
await insertFeatureEnvironmentsLastSeen('my-new-feature-toggle', 'default');
|
||||||
|
|
||||||
|
const { body } = await app.request
|
||||||
|
.get('/api/admin/projects/default')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200);
|
||||||
|
|
||||||
|
expect(body.features[0].environments[0].lastSeenAt).toEqual(
|
||||||
|
'2022-05-01T12:34:56.000Z',
|
||||||
|
);
|
||||||
|
|
||||||
|
const appWithLastSeenRefactor = await setupAppWithCustomConfig(
|
||||||
|
db.stores,
|
||||||
|
{
|
||||||
|
experimental: {
|
||||||
|
flags: {
|
||||||
|
useLastSeenRefactor: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
db.rawDatabase,
|
||||||
|
);
|
||||||
|
|
||||||
|
const response = await appWithLastSeenRefactor.request
|
||||||
|
.get('/api/admin/projects/default')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200);
|
||||||
|
|
||||||
|
expect(response.body.features[0].environments[0].lastSeenAt).toEqual(
|
||||||
|
'2023-10-01T12:34:56.000Z',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('response should include last seen at per environment for multiple environments', async () => {
|
||||||
|
const appWithLastSeenRefactor = await setupAppWithCustomConfig(
|
||||||
|
db.stores,
|
||||||
|
{
|
||||||
|
experimental: {
|
||||||
|
flags: {
|
||||||
|
useLastSeenRefactor: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
db.rawDatabase,
|
||||||
|
);
|
||||||
|
|
||||||
|
await db.stores.environmentStore.create({
|
||||||
|
name: 'development',
|
||||||
|
type: 'development',
|
||||||
|
sortOrder: 1,
|
||||||
|
enabled: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
await db.stores.environmentStore.create({
|
||||||
|
name: 'production',
|
||||||
|
type: 'production',
|
||||||
|
sortOrder: 2,
|
||||||
|
enabled: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
await appWithLastSeenRefactor.services.projectService.addEnvironmentToProject(
|
||||||
|
'default',
|
||||||
|
'development',
|
||||||
|
);
|
||||||
|
await appWithLastSeenRefactor.services.projectService.addEnvironmentToProject(
|
||||||
|
'default',
|
||||||
|
'production',
|
||||||
|
);
|
||||||
|
|
||||||
|
await appWithLastSeenRefactor.createFeature(
|
||||||
|
'multiple-environment-last-seen-at',
|
||||||
|
);
|
||||||
|
|
||||||
|
await insertLastSeenAt('multiple-environment-last-seen-at', 'default');
|
||||||
|
await insertLastSeenAt('multiple-environment-last-seen-at', 'development');
|
||||||
|
await insertLastSeenAt('multiple-environment-last-seen-at', 'production');
|
||||||
|
|
||||||
|
const { body } = await appWithLastSeenRefactor.request
|
||||||
|
.get('/api/admin/projects/default')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200);
|
||||||
|
|
||||||
|
const featureEnvironments = body.features[1].environments;
|
||||||
|
|
||||||
|
const [def, development, production] = featureEnvironments;
|
||||||
|
|
||||||
|
expect(def.name).toBe('default');
|
||||||
|
expect(def.lastSeenAt).toEqual('2023-10-01T12:34:56.000Z');
|
||||||
|
|
||||||
|
expect(development.name).toBe('development');
|
||||||
|
expect(development.lastSeenAt).toEqual('2023-10-01T12:34:56.000Z');
|
||||||
|
|
||||||
|
expect(production.name).toBe('production');
|
||||||
|
expect(production.lastSeenAt).toEqual('2023-10-01T12:34:56.000Z');
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user