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))); }
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))); }
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); }
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); }
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); }
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)); } }
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,
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); }