From 0f272680ee774337e247af70bc4f6ab2de6f55e1 Mon Sep 17 00:00:00 2001 From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com> Date: Mon, 23 May 2022 10:52:50 +0200 Subject: [PATCH] fix: project environments order (#1599) --- src/lib/db/feature-strategy-store.ts | 1 - src/lib/db/project-store.ts | 9 ++++- .../e2e/services/project-service.e2e.test.ts | 38 +++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/lib/db/feature-strategy-store.ts b/src/lib/db/feature-strategy-store.ts index 9b3f64b0eb..20f8af41ab 100644 --- a/src/lib/db/feature-strategy-store.ts +++ b/src/lib/db/feature-strategy-store.ts @@ -311,7 +311,6 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore { ); } - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types private static getEnvironment(r: any): IEnvironmentOverview { return { name: r.environment, diff --git a/src/lib/db/project-store.ts b/src/lib/db/project-store.ts index b2d962ed99..79ca27f2ae 100644 --- a/src/lib/db/project-store.ts +++ b/src/lib/db/project-store.ts @@ -238,7 +238,14 @@ class ProjectStore implements IProjectStore { .where({ project_id: id, }) - .pluck('environment_name'); + .innerJoin( + 'environments', + 'project_environments.environment_name', + 'environments.name', + ) + .orderBy('environments.sort_order', 'asc') + .orderBy('project_environments.environment_name', 'asc') + .pluck('project_environments.environment_name'); } async getMembers(projectId: string): Promise { diff --git a/src/test/e2e/services/project-service.e2e.test.ts b/src/test/e2e/services/project-service.e2e.test.ts index a7f26bbf15..e8b5c212fb 100644 --- a/src/test/e2e/services/project-service.e2e.test.ts +++ b/src/test/e2e/services/project-service.e2e.test.ts @@ -518,6 +518,44 @@ test('A newly created project only gets connected to enabled environments', asyn expect(connectedEnvs.some((e) => e === disabledEnv)).toBeFalsy(); }); +test('should have environments sorted in order', async () => { + const project = { + id: 'environment-order-test', + name: 'Environment testing project', + description: '', + }; + const first = 'test'; + const second = 'abc'; + const third = 'example'; + const fourth = 'mock'; + await db.stores.environmentStore.create({ + name: first, + type: 'test', + sortOrder: 1, + }); + await db.stores.environmentStore.create({ + name: fourth, + type: 'test', + sortOrder: 4, + }); + await db.stores.environmentStore.create({ + name: third, + type: 'test', + sortOrder: 3, + }); + await db.stores.environmentStore.create({ + name: second, + type: 'test', + sortOrder: 2, + }); + + await projectService.createProject(project, user); + const connectedEnvs = + await db.stores.projectStore.getEnvironmentsForProject(project.id); + + expect(connectedEnvs).toEqual(['default', first, second, third, fourth]); +}); + test('should add a user to the project with a custom role', async () => { const project = { id: 'add-users-custom-role',