mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +01:00
fix: change request enabled check should ignore disabled envs (#7869)
This commit is contained in:
parent
cac621c450
commit
94a05eecc0
@ -0,0 +1,49 @@
|
|||||||
|
import dbInit, { type ITestDb } from '../../../test/e2e/helpers/database-init';
|
||||||
|
import getLogger from '../../../test/fixtures/no-logger';
|
||||||
|
import { createChangeRequestAccessReadModel } from './createChangeRequestAccessReadModel';
|
||||||
|
import { createTestConfig } from '../../../test/config/test-config';
|
||||||
|
import type { IChangeRequestAccessReadModel } from './change-request-access-read-model';
|
||||||
|
|
||||||
|
let db: ITestDb;
|
||||||
|
|
||||||
|
let readModel: IChangeRequestAccessReadModel;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
db = await dbInit('change_request_access_read_model', getLogger);
|
||||||
|
|
||||||
|
const config = createTestConfig({
|
||||||
|
getLogger,
|
||||||
|
});
|
||||||
|
|
||||||
|
readModel = createChangeRequestAccessReadModel(db.rawDatabase, config);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
await db.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test(`Should indicate change request enabled status`, async () => {
|
||||||
|
// no change requests
|
||||||
|
const defaultStatus =
|
||||||
|
await readModel.isChangeRequestsEnabledForProject('default');
|
||||||
|
expect(defaultStatus).toBe(false);
|
||||||
|
|
||||||
|
// change request enabled in enabled environment
|
||||||
|
await db.rawDatabase('change_request_settings').insert({
|
||||||
|
project: 'default',
|
||||||
|
environment: 'default',
|
||||||
|
required_approvals: 1,
|
||||||
|
});
|
||||||
|
const enabledStatus =
|
||||||
|
await readModel.isChangeRequestsEnabledForProject('default');
|
||||||
|
expect(enabledStatus).toBe(true);
|
||||||
|
|
||||||
|
// change request enabled in disabled environment
|
||||||
|
await db.stores.projectStore.deleteEnvironmentForProject(
|
||||||
|
'default',
|
||||||
|
'default',
|
||||||
|
);
|
||||||
|
const disabledStatus =
|
||||||
|
await readModel.isChangeRequestsEnabledForProject('default');
|
||||||
|
expect(disabledStatus).toBe(false);
|
||||||
|
});
|
@ -70,14 +70,20 @@ export class ChangeRequestAccessReadModel
|
|||||||
public async isChangeRequestsEnabledForProject(
|
public async isChangeRequestsEnabledForProject(
|
||||||
project: string,
|
project: string,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const result = await this.db.raw(
|
const result = await this.db('change_request_settings')
|
||||||
`SELECT EXISTS(SELECT 1
|
.join('project_environments', function () {
|
||||||
FROM change_request_settings
|
return this.on(
|
||||||
WHERE project = ?
|
'change_request_settings.project',
|
||||||
) AS present`,
|
'project_environments.project_id',
|
||||||
[project],
|
).andOn(
|
||||||
|
'change_request_settings.environment',
|
||||||
|
'project_environments.environment_name',
|
||||||
);
|
);
|
||||||
const { present } = result.rows[0];
|
})
|
||||||
return present;
|
.where('change_request_settings.project', project)
|
||||||
|
.select('change_request_settings.project')
|
||||||
|
.first();
|
||||||
|
|
||||||
|
return Boolean(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ const FLAG_NAME = 'crarm-test-flag';
|
|||||||
let readModel: IChangeRequestSegmentUsageReadModel;
|
let readModel: IChangeRequestSegmentUsageReadModel;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
db = await dbInit('change_request_access_read_model_serial', getLogger);
|
db = await dbInit('change_request_segment_usage_read_model', getLogger);
|
||||||
|
|
||||||
user = await db.stores.userStore.insert({
|
user = await db.stores.userStore.insert({
|
||||||
username: 'cr-creator',
|
username: 'cr-creator',
|
||||||
|
Loading…
Reference in New Issue
Block a user