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 { setupAppWithCustomConfig } from '../../../helpers/test-helper';
|
||||
import dbInit, { ITestDb } from '../../../helpers/database-init';
|
||||
import {
|
||||
IUnleashTest,
|
||||
setupAppWithCustomConfig,
|
||||
} from '../../../helpers/test-helper';
|
||||
import getLogger from '../../../../fixtures/no-logger';
|
||||
import ProjectStore from '../../../../../lib/db/project-store';
|
||||
|
||||
let app;
|
||||
let db;
|
||||
import { IProjectStore } from 'lib/types';
|
||||
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 () => {
|
||||
db = await dbInit('projects_api_serial', getLogger);
|
||||
@ -35,7 +61,6 @@ test('Should ONLY return default project', async () => {
|
||||
name: 'test',
|
||||
description: '',
|
||||
mode: 'open',
|
||||
defaultStickiness: 'default',
|
||||
});
|
||||
|
||||
const { body } = await app.request
|
||||
@ -62,3 +87,103 @@ test('response for default project should include created_at', async () => {
|
||||
.expect(200);
|
||||
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