Skip to content

Commit e648ee5

Browse files
committed
feat: expose enabled startup feature toggle names via getter property
1 parent ba48844 commit e648ee5

3 files changed

Lines changed: 11 additions & 15 deletions

File tree

apps/webapp/src/script/featureToggles/startupFeatureToggleQueryParameters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function readEnabledFeatureToggleNameSetFromLocationSearch(
4343
locationSearch: string,
4444
): ReadonlySet<StartupFeatureToggleName> {
4545
const startupFeatureToggles = createStartupFeatureTogglesFromLocationSearch(locationSearch);
46-
return new Set(startupFeatureToggles.getEnabledFeatureToggleNames());
46+
return new Set(startupFeatureToggles.enabledFeatureToggleNames);
4747
}
4848

4949
function toUpdatedEnabledFeatureToggleNameSet(

apps/webapp/src/script/featureToggles/startupFeatureToggles.test.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ describe('startupFeatureToggles', function () {
4040
const startupFeatureToggles = createStartupFeatureTogglesFromLocationSearch('?foo=bar');
4141

4242
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(false);
43-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).toEqual([]);
43+
expect(startupFeatureToggles.enabledFeatureToggleNames).toEqual([]);
4444
});
4545

4646
it('enables a whitelisted feature toggle when present in the query parameter', () => {
@@ -57,15 +57,15 @@ describe('startupFeatureToggles', function () {
5757
);
5858

5959
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(true);
60-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).not.toContain('unknown-feature');
60+
expect(startupFeatureToggles.enabledFeatureToggleNames).not.toContain('unknown-feature');
6161
});
6262

6363
it('ignores unknown feature toggles from the query parameter', () => {
6464
const startupFeatureToggles = createStartupFeatureTogglesFromLocationSearch(
6565
`?${startupFeatureToggleQueryParameterName}=unknown-feature`,
6666
);
6767

68-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).toEqual([]);
68+
expect(startupFeatureToggles.enabledFeatureToggleNames).toEqual([]);
6969
});
7070

7171
it('keeps only whitelisted feature toggles when known and unknown values are mixed', () => {
@@ -74,7 +74,7 @@ describe('startupFeatureToggles', function () {
7474
);
7575

7676
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(true);
77-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).not.toContain('unknown-feature');
77+
expect(startupFeatureToggles.enabledFeatureToggleNames).not.toContain('unknown-feature');
7878
});
7979

8080
it('enables the applock refactored feature toggle when present in the query parameter', () => {
@@ -107,9 +107,7 @@ describe('startupFeatureToggles', function () {
107107
);
108108

109109
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(true);
110-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).toEqual([
111-
reliableWebsocketConnectionFeatureToggleName,
112-
]);
110+
expect(startupFeatureToggles.enabledFeatureToggleNames).toEqual([reliableWebsocketConnectionFeatureToggleName]);
113111
});
114112

115113
it('ignores empty list entries in the feature toggle query parameter', () => {
@@ -118,9 +116,7 @@ describe('startupFeatureToggles', function () {
118116
);
119117

120118
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(true);
121-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).toEqual([
122-
reliableWebsocketConnectionFeatureToggleName,
123-
]);
119+
expect(startupFeatureToggles.enabledFeatureToggleNames).toEqual([reliableWebsocketConnectionFeatureToggleName]);
124120
});
125121

126122
it('treats feature toggle names as case-sensitive', () => {
@@ -130,7 +126,7 @@ describe('startupFeatureToggles', function () {
130126
);
131127

132128
expect(startupFeatureToggles.isFeatureToggleEnabled(reliableWebsocketConnectionFeatureToggleName)).toBe(false);
133-
expect(startupFeatureToggles.getEnabledFeatureToggleNames()).not.toContain(uppercaseFeatureToggleName);
129+
expect(startupFeatureToggles.enabledFeatureToggleNames).not.toContain(uppercaseFeatureToggleName);
134130
});
135131

136132
it('contains only whitelisted values in allowedStartupFeatureToggleNames', () => {

apps/webapp/src/script/featureToggles/startupFeatureToggles.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const allowedStartupFeatureToggleNameSet = new Set<StartupFeatureToggleName>(all
3030

3131
export type StartupFeatureToggles = {
3232
readonly isFeatureToggleEnabled: (featureToggleName: StartupFeatureToggleName) => boolean;
33-
readonly getEnabledFeatureToggleNames: () => readonly StartupFeatureToggleName[];
33+
readonly enabledFeatureToggleNames: readonly StartupFeatureToggleName[];
3434
};
3535

3636
function trimFeatureToggleName(featureToggleName: string): string {
@@ -68,11 +68,11 @@ export function createStartupFeatureTogglesFromLocationSearch(locationSearch: st
6868
);
6969

7070
return {
71-
isFeatureToggleEnabled: function isFeatureToggleEnabled(featureToggleName: StartupFeatureToggleName): boolean {
71+
isFeatureToggleEnabled(featureToggleName) {
7272
return enabledFeatureToggleNameSet.has(featureToggleName);
7373
},
7474

75-
getEnabledFeatureToggleNames: function getEnabledFeatureToggleNames(): readonly StartupFeatureToggleName[] {
75+
get enabledFeatureToggleNames() {
7676
return [...enabledFeatureToggleNameSet];
7777
},
7878
};

0 commit comments

Comments
 (0)