diff --git a/src/featureFlags.provider.js b/src/featureFlags.provider.js index db7ac99..3e2e4b8 100644 --- a/src/featureFlags.provider.js +++ b/src/featureFlags.provider.js @@ -23,6 +23,7 @@ function FeatureFlags($q, featureFlagOverrides, initialFlags) { updateFlagsAndGetAll = function(newFlags) { newFlags.forEach(function(flag) { serverFlagCache[flag.key] = flag.active; + featureFlagOverrides.set(flag.key, flag.active); flag.active = isOn(flag.key); }); angular.copy(newFlags, flags); diff --git a/test/featureFlags.provider.spec.js b/test/featureFlags.provider.spec.js index 99df006..05398bf 100644 --- a/test/featureFlags.provider.spec.js +++ b/test/featureFlags.provider.spec.js @@ -352,6 +352,28 @@ }); }); }); + + describe('when I enable a flag and then set the list of flags with the same flag', function() { + var flagKey = 'FLAG_KEY'; + var onFlag = { + active: true, + key: flagKey + }; + var offFlag = { + active: false, + key: flagKey + }; + + beforeEach(function() { + featureFlags.enable(onFlag); + + featureFlags.set([offFlag]); + }); + + it('should override previous flag value', function() { + expect(featureFlags.isOn(flagKey)).toBe(false); + }); + }); }); describe('Provider: featureFlags', function() {