示例#1
0
        public void CanSerializeToJson()
        {
            var state = new FeatureFlagsState(true);
            var flag1 = new FeatureFlagBuilder("key1").Version(100).Build();
            var flag2 = new FeatureFlagBuilder("key2").Version(200)
                        .TrackEvents(true).DebugEventsUntilDate(1000).Build();

            state.AddFlag(flag1, new JValue("value1"), 0, null);
            state.AddFlag(flag2, new JValue("value2"), 1, EvaluationReason.Fallthrough.Instance);

            var expectedString = @"{""key1"":""value1"",""key2"":""value2"",
                ""$flagsState"":{
                  ""key1"":{
                    ""variation"":0,""version"":100,""trackEvents"":false
                  },""key2"":{
                    ""variation"":1,""version"":200,""reason"":{""kind"":""FALLTHROUGH""},""trackEvents"":true,""debugEventsUntilDate"":1000
                  }
                },
                ""$valid"":true
            }";
            var expectedValue  = JsonConvert.DeserializeObject <JToken>(expectedString);
            var actualString   = JsonConvert.SerializeObject(state);
            var actualValue    = JsonConvert.DeserializeObject <JToken>(actualString);

            TestUtils.AssertJsonEqual(expectedValue, actualValue);
        }
        public void ReasonIsNullIfReasonsWereNotRecorded()
        {
            var reason = EvaluationReason.FallthroughReason;
            var state  = FeatureFlagsState.Builder().AddFlag("key", new EvaluationDetail <LdValue>(LdValue.Of("value"), 1, reason)).Build();

            Assert.Null(state.GetFlagReason("key"));
        }
        public void CanGetFlagReason()
        {
            var reason = EvaluationReason.FallthroughReason;
            var state  = FeatureFlagsState.Builder(FlagsStateOption.WithReasons).AddFlag("key",
                                                                                         new EvaluationDetail <LdValue>(LdValue.Of("value"), 1, reason)).Build();

            Assert.Equal(EvaluationReason.FallthroughReason, state.GetFlagReason("key"));
        }
        public void CanGetDeprecatedFlagValue()
        {
            var state = FeatureFlagsState.Builder().AddFlag("key", new EvaluationDetail <LdValue>(LdValue.Of("value"), 1, null)).Build();

#pragma warning disable 0618
            Assert.Equal(new JValue("value"), state.GetFlagValue("key"));
#pragma warning restore 0618
        }
示例#5
0
        public void CanGetFlagValue()
        {
            var state = new FeatureFlagsState(true);
            var flag  = new FeatureFlagBuilder("key").Build();

            state.AddFlag(flag, new JValue("value"), 1, null);

            Assert.Equal(new JValue("value"), state.GetFlagValue("key"));
        }
示例#6
0
        public void CanGetFlagReason()
        {
            var state = new FeatureFlagsState(true);
            var flag  = new FeatureFlagBuilder("key").Build();

            state.AddFlag(flag, new JValue("value"), 1, EvaluationReason.Fallthrough.Instance);

            Assert.Equal(EvaluationReason.Fallthrough.Instance, state.GetFlagReason("key"));
        }
示例#7
0
        public void ReasonIsNullIfReasonsWereNotRecorded()
        {
            var state = new FeatureFlagsState(true);
            var flag  = new FeatureFlagBuilder("key").Build();

            state.AddFlag(flag, new JValue("value"), 1, null);

            Assert.Null(state.GetFlagReason("key"));
        }
        public void UnknownFlagReturnsNullValue()
        {
            var state = new FeatureFlagsState(true);

#pragma warning disable 0618
            Assert.Null(state.GetFlagValue("key"));
#pragma warning restore 0618
            Assert.Equal(LdValue.Null, state.GetFlagValueJson("key"));
        }
        public void CanGetDeprecatedFlagValue()
        {
            var state = new FeatureFlagsState(true);
            var flag  = new FeatureFlagBuilder("key").Build();

            state.AddFlag(flag, new JValue("value"), 1, null, false);
#pragma warning disable 0618
            Assert.Equal(new JValue("value"), state.GetFlagValue("key"));
#pragma warning restore 0618
        }
        public void CanDeserializeFromJson()
        {
            var state = FeatureFlagsState.Builder(FlagsStateOption.WithReasons)
                        .AddFlag("key1", new JValue("value1"), 0, null, 100, false, null)
                        .AddFlag("key2", new JValue("value2"), 1, EvaluationReason.FallthroughReason, 200, true, 1000)
                        .Build();

            var jsonString = JsonConvert.SerializeObject(state);
            var state1     = JsonConvert.DeserializeObject <FeatureFlagsState>(jsonString);

            Assert.Equal(state, state1);
        }
        public void CanConvertToValuesMap()
        {
            var state = FeatureFlagsState.Builder()
                        .AddFlag("key1", new EvaluationDetail <LdValue>(LdValue.Of("value1"), 1, null))
                        .AddFlag("key2", new EvaluationDetail <LdValue>(LdValue.Of("value2"), 1, null))
                        .Build();

            var expected = new Dictionary <string, LdValue>
            {
                { "key1", LdValue.Of("value1") },
                { "key2", LdValue.Of("value2") }
            };

            Assert.Equal(expected, state.ToValuesJsonMap());
        }
示例#12
0
        public void CanDeserializeFromJson()
        {
            var state = new FeatureFlagsState(true);
            var flag1 = new FeatureFlagBuilder("key1").Version(100).Build();
            var flag2 = new FeatureFlagBuilder("key2").Version(200)
                        .TrackEvents(true).DebugEventsUntilDate(1000).Build();

            state.AddFlag(flag1, new JValue("value1"), 0, null);
            state.AddFlag(flag2, new JValue("value2"), 1, EvaluationReason.Fallthrough.Instance);

            var jsonString = JsonConvert.SerializeObject(state);
            var state1     = JsonConvert.DeserializeObject <FeatureFlagsState>(jsonString);

            Assert.Equal(state, state1);
        }
示例#13
0
        public void CanConvertToValuesMap()
        {
            var state = new FeatureFlagsState(true);
            var flag1 = new FeatureFlagBuilder("key1").Build();
            var flag2 = new FeatureFlagBuilder("key2").Build();

            state.AddFlag(flag1, new JValue("value1"), 0, null);
            state.AddFlag(flag2, new JValue("value2"), 1, null);

            var expected = new Dictionary <string, JToken>
            {
                { "key1", new JValue("value1") },
                { "key2", new JValue("value2") }
            };

            Assert.Equal(expected, state.ToValuesMap());
        }
        public void CanConvertToDeprecatedValuesMap()
        {
            var state = FeatureFlagsState.Builder()
                        .AddFlag("key1", new EvaluationDetail <LdValue>(LdValue.Of("value1"), 1, null))
                        .AddFlag("key2", new EvaluationDetail <LdValue>(LdValue.Of("value2"), 1, null))
                        .Build();

            var expected = new Dictionary <string, JToken>
            {
                { "key1", new JValue("value1") },
                { "key2", new JValue("value2") }
            };

#pragma warning disable 0618
            Assert.Equal(expected, state.ToValuesMap());
#pragma warning restore 0618
        }
        public void CanConvertToDeprecatedValuesMap()
        {
            var state = new FeatureFlagsState(true);
            var flag1 = new FeatureFlagBuilder("key1").Build();
            var flag2 = new FeatureFlagBuilder("key2").Build();

            state.AddFlag(flag1, new JValue("value1"), 0, null, false);
            state.AddFlag(flag2, new JValue("value2"), 1, null, false);

            var expected = new Dictionary <string, JToken>
            {
                { "key1", new JValue("value1") },
                { "key2", new JValue("value2") }
            };

#pragma warning disable 0618
            Assert.Equal(expected, state.ToValuesMap());
#pragma warning restore 0618
        }
        public void CanSerializeToJson()
        {
            var state = FeatureFlagsState.Builder(FlagsStateOption.WithReasons)
                        .AddFlag("key1", new JValue("value1"), 0, null, 100, false, null)
                        .AddFlag("key2", new JValue("value2"), 1, EvaluationReason.FallthroughReason, 200, true, 1000)
                        .Build();

            var expectedString = @"{""key1"":""value1"",""key2"":""value2"",
                ""$flagsState"":{
                  ""key1"":{
                    ""variation"":0,""version"":100
                  },""key2"":{
                    ""variation"":1,""version"":200,""reason"":{""kind"":""FALLTHROUGH""},""trackEvents"":true,""debugEventsUntilDate"":1000
                  }
                },
                ""$valid"":true
            }";
            var expectedValue  = LdValue.Parse(expectedString);
            var actualString   = JsonConvert.SerializeObject(state);
            var actualValue    = LdValue.Parse(actualString);

            Assert.Equal(expectedValue, actualValue);
        }
示例#17
0
        public void UnknownFlagReturnsNullReason()
        {
            var state = new FeatureFlagsState(true);

            Assert.Null(state.GetFlagReason("key"));
        }
        public void UnknownFlagReturnsNullReason()
        {
            var state = FeatureFlagsState.Builder().Build();

            Assert.Null(state.GetFlagReason("key"));
        }
        public void CanGetFlagValue()
        {
            var state = FeatureFlagsState.Builder().AddFlag("key", new EvaluationDetail <LdValue>(LdValue.Of("value"), 1, null)).Build();

            Assert.Equal(LdValue.Of("value"), state.GetFlagValueJson("key"));
        }