diff --git a/package.json b/package.json index 5e1d32c44640..c8775f6220af 100644 --- a/package.json +++ b/package.json @@ -82,9 +82,7 @@ "testTimeout": 10000, "globalSetup": "./scripts/jest-setup.js", "transform": { - "^.+\\.tsx?$": [ - "@swc/jest" - ] + "^.+\\.tsx?$": ["@swc/jest"] }, "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", "testPathIgnorePatterns": [ @@ -93,13 +91,7 @@ "/frontend/", "/website/" ], - "moduleFileExtensions": [ - "ts", - "tsx", - "js", - "jsx", - "json" - ], + "moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json"], "coveragePathIgnorePatterns": [ "/node_modules/", "/dist/", @@ -237,14 +229,8 @@ "tough-cookie": "4.1.3" }, "lint-staged": { - "*.{js,ts}": [ - "biome check --apply --no-errors-on-unmatched" - ], - "*.{jsx,tsx}": [ - "biome check --apply --no-errors-on-unmatched" - ], - "*.json": [ - "biome format --write --no-errors-on-unmatched" - ] + "*.{js,ts}": ["biome check --apply --no-errors-on-unmatched"], + "*.{jsx,tsx}": ["biome check --apply --no-errors-on-unmatched"], + "*.json": ["biome format --write --no-errors-on-unmatched"] } } diff --git a/src/lib/features/feature-toggle/feature-toggle-service.ts b/src/lib/features/feature-toggle/feature-toggle-service.ts index a4aca46d09af..47056d196e97 100644 --- a/src/lib/features/feature-toggle/feature-toggle-service.ts +++ b/src/lib/features/feature-toggle/feature-toggle-service.ts @@ -1783,7 +1783,7 @@ class FeatureToggleService { strategies.map((strategy) => this.updateStrategy( strategy.id, - { disabled: false }, + { ...strategy, disabled: false }, { environment, projectId: project, diff --git a/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts b/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts index b0b9c61b586b..916690f6b89a 100644 --- a/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts +++ b/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts @@ -734,3 +734,51 @@ test('Should return last seen at per environment', async () => { ); expect(featureToggle.lastSeenAt).toEqual(new Date(lastSeenAtStoreDate)); }); + +test('Should enable disabled strategies on feature environment enabled', async () => { + const flagName = 'enableThisFlag'; + const project = 'default'; + const environment = 'default'; + const shouldActivateDisabledStrategies = true; + await service.createFeatureToggle( + project, + { + name: flagName, + }, + TEST_AUDIT_USER, + ); + const config: Omit = { + name: 'default', + constraints: [ + { contextName: 'userId', operator: 'IN', values: ['1', '1'] }, + ], + parameters: { param: 'a' }, + variants: [ + { + name: 'a', + weight: 100, + weightType: 'variable', + stickiness: 'random', + }, + ], + disabled: true, + }; + const createdConfig = await service.createStrategy( + config, + { projectId: project, featureName: flagName, environment }, + TEST_AUDIT_USER, + ); + + await service.updateEnabled( + project, + flagName, + environment, + true, + TEST_AUDIT_USER, + { email: 'test@example.com' } as User, + shouldActivateDisabledStrategies, + ); + + const strategy = await service.getStrategy(createdConfig.id); + expect(strategy).toMatchObject({ ...config, disabled: false }); +});