public void CanRegisterListeners() { var manager = Manager(); var listener1 = new FlagChangedEventSink(); var listener2 = new FlagChangedEventSink(); manager.FlagChanged += listener1.Handler; manager.FlagChanged += listener2.Handler; manager.FlagWasUpdated(INT_FLAG, 7, 6); manager.FlagWasUpdated(DOUBLE_FLAG, 10.5, 9.5); var event1a = listener1.Await(); var event1b = listener1.Await(); var event2a = listener2.Await(); var event2b = listener2.Await(); Assert.Equal(INT_FLAG, event1a.Key); Assert.Equal(INT_FLAG, event2a.Key); Assert.Equal(7, event1a.NewValue.AsInt); Assert.Equal(7, event2a.NewValue.AsInt); Assert.Equal(6, event1a.OldValue.AsInt); Assert.Equal(6, event2a.OldValue.AsInt); Assert.False(event1a.FlagWasDeleted); Assert.False(event2a.FlagWasDeleted); Assert.Equal(DOUBLE_FLAG, event1b.Key); Assert.Equal(DOUBLE_FLAG, event2b.Key); Assert.Equal(10.5, event1b.NewValue.AsFloat); Assert.Equal(10.5, event2b.NewValue.AsFloat); Assert.Equal(9.5, event1b.OldValue.AsFloat); Assert.Equal(9.5, event2b.OldValue.AsFloat); Assert.False(event1b.FlagWasDeleted); Assert.False(event2b.FlagWasDeleted); }
public void ListenerGetsUpdatedWhenManagerFlagDeleted() { var manager = Manager(); var listener = new FlagChangedEventSink(); manager.FlagChanged += listener.Handler; manager.FlagWasDeleted(INT_FLAG, 1); var e = listener.Await(); Assert.Equal(INT_FLAG, e.Key); Assert.Equal(1, e.OldValue.AsInt); Assert.True(e.FlagWasDeleted); }
public void RemoveFlagSendsFlagChangeEvent() { var listener = new FlagChangedEventSink(); listenerManager.FlagChanged += listener.Handler; var flagCacheManager = ManagerWithCachedFlags(); var updatedFeatureFlag = new FeatureFlagBuilder().Value(LdValue.Of(7)).Build(); flagCacheManager.RemoveFlagForUser("int-flag", user); var e = listener.Await(); Assert.Equal("int-flag", e.Key); Assert.True(e.FlagWasDeleted); }
public void CacheFlagsFromServiceUpdatesListenersIfFlagValueChanged() { var listener = new FlagChangedEventSink(); listenerManager.FlagChanged += listener.Handler; var flagCacheManager = ManagerWithCachedFlags(); var newFlagsJson = "{\"int-flag\":{\"value\":5}}"; flagCacheManager.CacheFlagsFromService(TestUtil.DecodeFlagsJson(newFlagsJson), user); var e = listener.Await(); Assert.Equal("int-flag", e.Key); Assert.Equal(5, e.NewValue.AsInt); Assert.False(e.FlagWasDeleted); }
public void RemoveFlagSendsFlagChangeEvent() { var listener = new FlagChangedEventSink(); listenerManager.FlagChanged += listener.Handler; var flagCacheManager = ManagerWithCachedFlags(); var updatedFeatureFlag = new FeatureFlag(); updatedFeatureFlag.value = JToken.FromObject(7); flagCacheManager.RemoveFlagForUser("int-flag", user); var e = listener.Await(); Assert.Equal("int-flag", e.Key); Assert.True(e.FlagWasDeleted); }
public void CanUnregisterListeners() { var manager = Manager(); var listener1 = new FlagChangedEventSink(); var listener2 = new FlagChangedEventSink(); manager.FlagChanged += listener1.Handler; manager.FlagChanged += listener2.Handler; manager.FlagChanged -= listener1.Handler; manager.FlagWasUpdated(INT_FLAG, 7, 6); var e = listener2.Await(); Assert.Equal(INT_FLAG, e.Key); Assert.Equal(7, e.NewValue.AsInt); Assert.Equal(6, e.OldValue.AsInt); // This is pretty hacky, but since we're testing for the *lack* of a call, there's no signal we can wait on. Thread.Sleep(100); Assert.True(listener1.IsEmpty); }