diff --git a/src/features.ts b/src/features.ts index abd96f0..03272e2 100644 --- a/src/features.ts +++ b/src/features.ts @@ -1,5 +1,6 @@ export enum GitlabFeaturesEnum { SEND_STAGING_EVENTS = 'isSendStagingEventsEnabled', + OWNER_TEAM = 'isOwnerTeamEnabled', } export type FeaturesList = { [key in GitlabFeaturesEnum]: boolean }; diff --git a/src/services/feature-flags.test.ts b/src/services/feature-flags.test.ts new file mode 100644 index 0000000..a0aaeab --- /dev/null +++ b/src/services/feature-flags.test.ts @@ -0,0 +1,25 @@ +import { listFeatures } from './feature-flags'; + +describe('listFeatures', () => { + beforeEach(() => { + process.env.OWNER_TEAM_FF = 'false'; + process.env.FF_SEND_STAGING_EVENTS = 'false'; + }); + + test('gets feature flags from their variables', async () => { + process.env.OWNER_TEAM_FF = 'true'; + process.env.FF_SEND_STAGING_EVENTS = 'true'; + + const featureFlags = listFeatures(); + + expect(featureFlags.isOwnerTeamEnabled).toEqual(true); + expect(featureFlags.isSendStagingEventsEnabled).toEqual(true); + }); + + test('gets feature flags in their default state', async () => { + const featureFlags = listFeatures(); + + expect(featureFlags.isOwnerTeamEnabled).toEqual(false); + expect(featureFlags.isSendStagingEventsEnabled).toEqual(false); + }); +}); diff --git a/src/services/feature-flags.ts b/src/services/feature-flags.ts index 646dbfc..0cedbef 100644 --- a/src/services/feature-flags.ts +++ b/src/services/feature-flags.ts @@ -4,8 +4,13 @@ export const isSendStagingEventsEnabled = (defaultValue = false): boolean => { return process.env.FF_SEND_STAGING_EVENTS === 'true' || defaultValue; }; +export const isOwnerTeamEnabled = (defaultValue = false): boolean => { + return process.env.OWNER_TEAM_FF === 'true' || defaultValue; +}; + export const listFeatures = (): FeaturesList => { return { [GitlabFeaturesEnum.SEND_STAGING_EVENTS]: isSendStagingEventsEnabled(), + [GitlabFeaturesEnum.OWNER_TEAM]: isOwnerTeamEnabled(), }; }; diff --git a/ui/src/hooks/useFeatures.ts b/ui/src/hooks/useFeatures.ts index f1e42e8..3990270 100644 --- a/ui/src/hooks/useFeatures.ts +++ b/ui/src/hooks/useFeatures.ts @@ -6,6 +6,7 @@ import { DefaultErrorTypes, ErrorTypes } from '../resolverTypes'; export const useFeatures = (): [FeaturesList, boolean, ErrorTypes | undefined] => { const [features, setFeatures] = useState({ [GitlabFeaturesEnum.SEND_STAGING_EVENTS]: false, + [GitlabFeaturesEnum.OWNER_TEAM]: false, }); const [loading, setLoading] = useState(false); const [error, setError] = useState();