コード例 #1
0
        public void JsonVariationReturnsFlagValue()
        {
            var data = new JObject();

            data.Add("thing", new JValue("stuff"));
            featureStore.Upsert(VersionedDataKind.Features,
                                new FeatureFlagBuilder("key").OffWithValue(data).Build());

            Assert.Equal(data, client.JsonVariation("key", user, new JValue(42)));
        }
        public void JsonVariationReturnsFlagValue()
        {
            var data = LdValue.Convert.String.ObjectFrom(new Dictionary <string, string> {
                { "thing", "stuff" }
            });

            testData.UsePreconfiguredFlag(new FeatureFlagBuilder("key").OffWithValue(data).Build());

            Assert.Equal(data, client.JsonVariation("key", user, LdValue.Of(42)));
        }
コード例 #3
0
        public void JsonVariationReturnsFlagValue()
        {
            var data = LdValue.Convert.String.ObjectFrom(new Dictionary <string, string> {
                { "thing", "stuff" }
            });

            featureStore.Upsert(VersionedDataKind.Features,
                                new FeatureFlagBuilder("key").OffWithValue(data.InnerValue).Build());

            Assert.Equal(data, client.JsonVariation("key", user, LdValue.Of(42)));
        }
コード例 #4
0
        public void JsonVariationSendsEvent()
        {
            var data = LdValue.BuildObject().Add("thing", "stuff").Build();
            var flag = new FeatureFlagBuilder("key").Version(1).OffWithValue(data).Build();

            testData.UsePreconfiguredFlag(flag);
            var defaultVal = LdValue.Of(42);

            client.JsonVariation("key", user, defaultVal);
            Assert.Equal(1, eventSink.Events.Count);
            CheckFeatureEvent(eventSink.Events[0], flag, data, defaultVal, null);
        }
コード例 #5
0
        public void JsonVariationSendsEvent()
        {
            var data = new JObject();

            data.Add("thing", new JValue("stuff"));
            var flag = new FeatureFlagBuilder("key").OffWithValue(data).Build();

            featureStore.Upsert(VersionedDataKind.Features, flag);
            var defaultVal = new JValue(42);

            client.JsonVariation("key", user, defaultVal);
            Assert.Equal(1, eventSink.Events.Count);
            CheckFeatureEvent(eventSink.Events[0], flag, data, defaultVal, null);
        }
コード例 #6
0
        public void JsonVariationSendsEvent()
        {
            var data = LdValue.Convert.String.ObjectFrom(new Dictionary <string, string> {
                { "thing", "stuff" }
            });
            var flag = new FeatureFlagBuilder("key").OffWithValue(data.InnerValue).Build();

            featureStore.Upsert(VersionedDataKind.Features, flag);
            var defaultVal = LdValue.Of(42);

            client.JsonVariation("key", user, defaultVal);
            Assert.Equal(1, eventSink.Events.Count);
            CheckFeatureEvent(eventSink.Events[0], flag, data, defaultVal, null);
        }
コード例 #7
0
 private void VerifyNoFlagValues(ILdClient client, FullDataSet flags)
 {
     Assert.True(client.Initialized);
     foreach (var e in flags.Items)
     {
         Assert.Equal(LdValue.Null, client.JsonVariation(e.Key, LdValue.Null));
     }
 }
コード例 #8
0
        public async Task <FeatureToggleResponse <T> > GetJSON <T>(string flagName, string userKey)
        {
            try
            {
                await Task.CompletedTask;

                var flag   = _ldClient.JsonVariation(flagName, new User(userKey), default);
                var exists = flag != default;

                return(new FeatureToggleResponse <T>
                {
                    Toggle = exists ? flag.ToObject <T>() : default,
コード例 #9
0
        public T Get <T>(Enum featureFlag, IDictionary <string, object> userAttributes = null)
        {
            var value = default(T);
            var type  = typeof(T);

            _user = GetUser(userAttributes);
            var feature = featureFlag.GetFlag();

            switch (feature.Type)
            {
            case VariationType.Boolean:
                if (feature.Type != VariationType.Boolean && type == typeof(bool))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be bool");
                }

                value = (T)Convert.ChangeType(_ldClient.BoolVariation(feature.Key, _user, (bool)feature.DefaultValue), typeof(T));
                break;

            case VariationType.String:
                if (feature.Type != VariationType.String && type == typeof(string))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be string");
                }

                value = (T)Convert.ChangeType(_ldClient.StringVariation(feature.Key, _user, (string)feature.DefaultValue), typeof(T));
                break;

            case VariationType.Number:
                if (feature.Type != VariationType.Number && type == typeof(int))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be int");
                }

                value = (T)Convert.ChangeType(_ldClient.IntVariation(feature.Key, _user, (int)feature.DefaultValue), typeof(T));
                break;

            case VariationType.Float:
                if (feature.Type != VariationType.Float && type == typeof(float))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be float");
                }

                value = (T)Convert.ChangeType(_ldClient.FloatVariation(feature.Key, _user, (float)feature.DefaultValue), typeof(T));
                break;

            case VariationType.ArrayOfString:
                if (feature.Type != VariationType.ArrayOfString && type == typeof(string))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be array of string");
                }
                var commaSeperateStr = _ldClient.StringVariation(feature.Key, _user, (string)feature.DefaultValue);

                value = (T)Convert.ChangeType(commaSeperateStr.Split(new[] { ',' }, StringSplitOptions.None), typeof(T));
                break;

            case VariationType.Json:
                if (feature.Type != VariationType.Json && type == typeof(JToken))
                {
                    throw new InvalidCastException($"Feature flag is configure to be {feature.Type} except to be JToken");
                }

                value = (T)Convert.ChangeType(_ldClient.JsonVariation(feature.Key, _user, (JToken)feature.DefaultValue), typeof(T));
                break;
            }

            return(value);
        }