Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }