From ba758e13c161b2ad827330ad42e40e4e2a4ff47a Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Fri, 20 Oct 2023 12:33:43 +0200 Subject: [PATCH] test: added tests for has strategies and enabled strategies (#5112) --- .../api/admin/project/projects.e2e.test.ts | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/src/test/e2e/api/admin/project/projects.e2e.test.ts b/src/test/e2e/api/admin/project/projects.e2e.test.ts index b700b10138..1487e6e727 100644 --- a/src/test/e2e/api/admin/project/projects.e2e.test.ts +++ b/src/test/e2e/api/admin/project/projects.e2e.test.ts @@ -8,6 +8,7 @@ import { import getLogger from '../../../../fixtures/no-logger'; import { IProjectStore } from 'lib/types'; +import { DEFAULT_ENV } from '../../../../../lib/util'; let app: IUnleashTest; let db: ITestDb; @@ -22,6 +23,7 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, + featureSwitchRefactor: true, }, }, }, @@ -30,11 +32,87 @@ beforeAll(async () => { projectStore = db.stores.projectStore; }); +afterEach(async () => { + await db.stores.featureToggleStore.deleteAll(); +}); + afterAll(async () => { await app.destroy(); await db.destroy(); }); +test('should report has strategies and enabled strategies', async () => { + const app = await setupAppWithCustomConfig( + db.stores, + { + experimental: { + flags: { + featureSwitchRefactor: true, + }, + }, + }, + db.rawDatabase, + ); + await app.createFeature('featureWithStrategies'); + await app.createFeature('featureWithoutStrategies'); + await app.createFeature('featureWithDisabledStrategies'); + await app.addStrategyToFeatureEnv( + { + name: 'default', + }, + DEFAULT_ENV, + 'featureWithStrategies', + ); + await app.addStrategyToFeatureEnv( + { + name: 'default', + disabled: true, + }, + DEFAULT_ENV, + 'featureWithDisabledStrategies', + ); + + const { body } = await app.request + .get('/api/admin/projects/default') + .expect('Content-Type', /json/) + .expect(200); + + expect(body).toMatchObject({ + features: [ + { + name: 'featureWithStrategies', + environments: [ + { + name: 'default', + hasStrategies: true, + hasEnabledStrategies: true, + }, + ], + }, + { + name: 'featureWithoutStrategies', + environments: [ + { + name: 'default', + hasStrategies: false, + hasEnabledStrategies: false, + }, + ], + }, + { + name: 'featureWithDisabledStrategies', + environments: [ + { + name: 'default', + hasStrategies: true, + hasEnabledStrategies: false, + }, + ], + }, + ], + }); +}); + test('Should ONLY return default project', async () => { projectStore.create({ id: 'test2', @@ -121,6 +199,7 @@ test('response should include last seen at per environment for multiple environm }, db.rawDatabase, ); + await app.createFeature('my-new-feature-toggle'); await db.stores.environmentStore.create({ name: 'development',