private void SetOptimizelyConfig(ProjectConfig projectConfig) { try { CurrentOptimizelyConfig = new OptimizelyConfigService(projectConfig).GetOptimizelyConfig(); } catch (Exception ex) { Logger.Log(LogLevel.ERROR, ex.Message); } }
public static void AreEqual(OptimizelyConfig expected, OptimizelyConfig actual) { AreEquivalent(expected.Attributes, actual.Attributes); AreEquivalent(expected.Audiences, actual.Audiences); Assert.AreEqual(expected.EnvironmentKey, actual.EnvironmentKey); AreEquivalent(expected.Events, actual.Events); AreEquivalent(expected.ExperimentsMap, actual.ExperimentsMap); AreEquivalent(expected.FeaturesMap, actual.FeaturesMap); Assert.AreEqual(expected.Revision, actual.Revision); Assert.AreEqual(expected.SDKKey, actual.SDKKey); }
public void TestOptimizelyConfigEntity() { OptimizelyConfig expectedOptlyFeature = new OptimizelyConfig("123", new Dictionary <string, OptimizelyExperiment>(), new Dictionary <string, OptimizelyFeature>() ); Assert.AreEqual(expectedOptlyFeature.Revision, "123"); Assert.AreEqual(expectedOptlyFeature.ExperimentsMap, new Dictionary <string, OptimizelyExperiment>()); Assert.AreEqual(expectedOptlyFeature.FeaturesMap, new Dictionary <string, OptimizelyFeature>()); }
public void TestOptimizelyConfigEntity() { OptimizelyConfig expectedOptlyFeature = new OptimizelyConfig("123", "testSdkKey", "Development", attributes: new OptimizelyAttribute[0], audiences: new OptimizelyAudience[0], events: new OptimizelyEvent[0], experimentsMap: new Dictionary <string, OptimizelyExperiment>(), featuresMap: new Dictionary <string, OptimizelyFeature>() ); Assert.AreEqual(expectedOptlyFeature.Revision, "123"); Assert.AreEqual(expectedOptlyFeature.SDKKey, "testSdkKey"); Assert.AreEqual(expectedOptlyFeature.EnvironmentKey, "Development"); Assert.AreEqual(expectedOptlyFeature.Attributes, new Entity.Attribute[0]); Assert.AreEqual(expectedOptlyFeature.Audiences, new OptimizelyAudience[0]); Assert.AreEqual(expectedOptlyFeature.Events, new Entity.Event[0]); Assert.AreEqual(expectedOptlyFeature.ExperimentsMap, new Dictionary <string, OptimizelyExperiment>()); Assert.AreEqual(expectedOptlyFeature.FeaturesMap, new Dictionary <string, OptimizelyFeature>()); }
public void TestGetOptimizelyConfigService() { var datafileProjectConfig = DatafileProjectConfig.Create(TestData.TypedAudienceDatafile, new NoOpLogger(), new ErrorHandler.NoOpErrorHandler()); IDictionary <string, OptimizelyExperiment> experimentsMap = new Dictionary <string, OptimizelyExperiment> { { "feat_with_var_test", new OptimizelyExperiment( id: "11564051718", key: "feat_with_var_test", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "11617170975", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable( id: "11535264366", key: "x", type: "string", value: "xyz") } }) } } ) }, { "typed_audience_experiment", new OptimizelyExperiment( id: "1323241597", key: "typed_audience_experiment", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "A", new OptimizelyVariation( id: "1423767503", key: "A", featureEnabled: null, variablesMap: new Dictionary <string, OptimizelyVariable> ()) } } ) }, { "audience_combinations_experiment", new OptimizelyExperiment( id: "1323241598", key: "audience_combinations_experiment", audiences: "(\"exactString\" OR \"substringString\") AND (\"exists\" OR \"exactNumber\" OR \"gtNumber\" OR \"ltNumber\" OR \"exactBoolean\")", variationsMap: new Dictionary <string, OptimizelyVariation> { { "A", new OptimizelyVariation( id: "1423767504", key: "A", featureEnabled: null, variablesMap: new Dictionary <string, OptimizelyVariable> ()) } } ) }, { "feat2_with_var_test", new OptimizelyExperiment( id: "1323241599", key: "feat2_with_var_test", audiences: "(\"exactString\" OR \"substringString\") AND (\"exists\" OR \"exactNumber\" OR \"gtNumber\" OR \"ltNumber\" OR \"exactBoolean\")", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "1423767505", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "150") } }) } } ) } }; var featuresMap = new Dictionary <string, OptimizelyFeature> { { "feat_no_vars", new OptimizelyFeature( id: "11477755619", key: "feat_no_vars", experimentRules: new List <OptimizelyExperiment>(), deliveryRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "11488548027", key: "feat_no_vars_rule", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "11557362669", new OptimizelyVariation( id: "11557362669", key: "11557362669", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable>()) } } ) }, experimentsMap: new Dictionary <string, OptimizelyExperiment>(), variablesMap: new Dictionary <string, OptimizelyVariable>()) }, { "feat_with_var", new OptimizelyFeature( id: "11567102051", key: "feat_with_var", experimentRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "11564051718", key: "feat_with_var_test", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "11617170975", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable( id: "11535264366", key: "x", type: "string", value: "xyz") } }) } } ) }, deliveryRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "11630490911", key: "feat_with_var_rule", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "11475708558", new OptimizelyVariation( id: "11475708558", key: "11475708558", featureEnabled: false, variablesMap: new Dictionary <string, OptimizelyVariable>() { { "x", new OptimizelyVariable("11535264366", "x", "string", "x") } }) } } ) }, experimentsMap: new Dictionary <string, OptimizelyExperiment> { { "feat_with_var_test", new OptimizelyExperiment( id: "11564051718", key: "feat_with_var_test", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "11617170975", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable( id: "11535264366", key: "x", type: "string", value: "xyz") } }) } } ) } }, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable(id: "11535264366", key: "x", type: "string", value: "x") } }) }, { "feat2", new OptimizelyFeature( id: "11567102052", key: "feat2", deliveryRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "11488548028", key: "11488548028", audiences: "(\"exactString\" OR \"substringString\") AND (\"exists\" OR \"exactNumber\" OR \"gtNumber\" OR \"ltNumber\" OR \"exactBoolean\")", variationsMap: new Dictionary <string, OptimizelyVariation> { { "11557362670", new OptimizelyVariation( id: "11557362670", key: "11557362670", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable>() ) } } ) }, experimentRules: new List <OptimizelyExperiment>(), experimentsMap: new Dictionary <string, OptimizelyExperiment>(), variablesMap: new Dictionary <string, OptimizelyVariable>()) }, { "feat2_with_var", new OptimizelyFeature( id: "11567102053", key: "feat2_with_var", deliveryRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "11630490912", key: "11630490912", audiences: "", variationsMap: new Dictionary <string, OptimizelyVariation> { { "11475708559", new OptimizelyVariation( id: "11475708559", key: "11475708559", featureEnabled: false, variablesMap: new Dictionary <string, OptimizelyVariable>() { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "10") } }) } } ) }, experimentRules: new List <OptimizelyExperiment>() { new OptimizelyExperiment( id: "1323241599", key: "feat2_with_var_test", audiences: "(\"exactString\" OR \"substringString\") AND (\"exists\" OR \"exactNumber\" OR \"gtNumber\" OR \"ltNumber\" OR \"exactBoolean\")", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "1423767505", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "150") } }) } } ) }, experimentsMap: new Dictionary <string, OptimizelyExperiment> { { "feat2_with_var_test", new OptimizelyExperiment( id: "1323241599", key: "feat2_with_var_test", audiences: "(\"exactString\" OR \"substringString\") AND (\"exists\" OR \"exactNumber\" OR \"gtNumber\" OR \"ltNumber\" OR \"exactBoolean\")", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "1423767505", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "150") } }) } } ) } }, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable(id: "11535264367", key: "z", type: "integer", value: "10") } }) } }; OptimizelyConfig optimizelyConfig = new OptimizelyConfigService(datafileProjectConfig).GetOptimizelyConfig(); OptimizelyConfig expectedOptimizelyConfig = new OptimizelyConfig(datafileProjectConfig.Revision, datafileProjectConfig.SDKKey, datafileProjectConfig.EnvironmentKey, attributes: new OptimizelyAttribute[] { new OptimizelyAttribute { Id = "594015", Key = "house" }, new OptimizelyAttribute { Id = "594016", Key = "lasers" }, new OptimizelyAttribute { Id = "594017", Key = "should_do_it" }, new OptimizelyAttribute { Id = "594018", Key = "favorite_ice_cream" } }, audiences: new OptimizelyAudience[] { new OptimizelyAudience("0", "$$dummy", "{\"type\": \"custom_attribute\", \"name\": \"$opt_dummy_attribute\", \"value\": \"impossible_value\"}"), new OptimizelyAudience("3468206643", "exactBoolean", "[\"and\",[\"or\",[\"or\",{\"name\":\"should_do_it\",\"type\":\"custom_attribute\",\"match\":\"exact\",\"value\":true}]]]"), new OptimizelyAudience("3468206646", "exactNumber", "[\"and\",[\"or\",[\"or\",{\"name\":\"lasers\",\"type\":\"custom_attribute\",\"match\":\"exact\",\"value\":45.5}]]]"), new OptimizelyAudience("3468206642", "exactString", "[\"and\", [\"or\", [\"or\", {\"name\": \"house\", \"type\": \"custom_attribute\", \"value\": \"Gryffindor\"}]]]"), new OptimizelyAudience("3988293899", "exists", "[\"and\",[\"or\",[\"or\",{\"name\":\"favorite_ice_cream\",\"type\":\"custom_attribute\",\"match\":\"exists\"}]]]"), new OptimizelyAudience("3468206647", "gtNumber", "[\"and\",[\"or\",[\"or\",{\"name\":\"lasers\",\"type\":\"custom_attribute\",\"match\":\"gt\",\"value\":70}]]]"), new OptimizelyAudience("3468206644", "ltNumber", "[\"and\",[\"or\",[\"or\",{\"name\":\"lasers\",\"type\":\"custom_attribute\",\"match\":\"lt\",\"value\":1.0}]]]"), new OptimizelyAudience("3468206645", "notChrome", "[\"and\", [\"or\", [\"not\", [\"or\", {\"name\": \"browser_type\", \"type\": \"custom_attribute\", \"value\":\"Chrome\"}]]]]"), new OptimizelyAudience("3468206648", "notExist", "[\"not\",{\"name\":\"input_value\",\"type\":\"custom_attribute\",\"match\":\"exists\"}]"), new OptimizelyAudience("3988293898", "substringString", "[\"and\",[\"or\",[\"or\",{\"name\":\"house\",\"type\":\"custom_attribute\",\"match\":\"substring\",\"value\":\"Slytherin\"}]]]"), }, events: new OptimizelyEvent[] { new OptimizelyEvent() { Id = "594089", Key = "item_bought", ExperimentIds = new string[] { "11564051718", "1323241597" } }, new OptimizelyEvent() { Id = "594090", Key = "user_signed_up", ExperimentIds = new string[] { "1323241598", "1323241599" } } }, experimentsMap: experimentsMap, featuresMap: featuresMap, datafile: TestData.TypedAudienceDatafile); Assertions.AreEqual(expectedOptimizelyConfig, optimizelyConfig); }
public void TestGetOptimizelyConfigService() { var datafileProjectConfig = DatafileProjectConfig.Create(TestData.TypedAudienceDatafile, new NoOpLogger(), new ErrorHandler.NoOpErrorHandler()); IDictionary <string, OptimizelyExperiment> experimentsMap = new Dictionary <string, OptimizelyExperiment> { { "feat_with_var_test", new OptimizelyExperiment( id: "11564051718", key: "feat_with_var_test", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "11617170975", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable( id: "11535264366", key: "x", type: "string", value: "xyz") } }) } } ) }, { "typed_audience_experiment", new OptimizelyExperiment( id: "1323241597", key: "typed_audience_experiment", variationsMap: new Dictionary <string, OptimizelyVariation> { { "A", new OptimizelyVariation( id: "1423767503", key: "A", featureEnabled: null, variablesMap: new Dictionary <string, OptimizelyVariable> ()) } } ) }, { "audience_combinations_experiment", new OptimizelyExperiment( id: "1323241598", key: "audience_combinations_experiment", variationsMap: new Dictionary <string, OptimizelyVariation> { { "A", new OptimizelyVariation( id: "1423767504", key: "A", featureEnabled: null, variablesMap: new Dictionary <string, OptimizelyVariable> ()) } } ) }, { "feat2_with_var_test", new OptimizelyExperiment( id: "1323241599", key: "feat2_with_var_test", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "1423767505", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "150") } }) } } ) } }; var featuresMap = new Dictionary <string, OptimizelyFeature> { { "feat_no_vars", new OptimizelyFeature( id: "11477755619", key: "feat_no_vars", experimentsMap: new Dictionary <string, OptimizelyExperiment>(), variablesMap: new Dictionary <string, OptimizelyVariable>()) }, { "feat_with_var", new OptimizelyFeature( id: "11567102051", key: "feat_with_var", experimentsMap: new Dictionary <string, OptimizelyExperiment> { { "feat_with_var_test", new OptimizelyExperiment( id: "11564051718", key: "feat_with_var_test", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "11617170975", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable( id: "11535264366", key: "x", type: "string", value: "xyz") } }) } } ) } }, variablesMap: new Dictionary <string, OptimizelyVariable> { { "x", new OptimizelyVariable(id: "11535264366", key: "x", type: "string", value: "x") } }) }, { "feat2", new OptimizelyFeature( id: "11567102052", key: "feat2", experimentsMap: new Dictionary <string, OptimizelyExperiment>(), variablesMap: new Dictionary <string, OptimizelyVariable>()) }, { "feat2_with_var", new OptimizelyFeature( id: "11567102053", key: "feat2_with_var", experimentsMap: new Dictionary <string, OptimizelyExperiment> { { "feat2_with_var_test", new OptimizelyExperiment( id: "1323241599", key: "feat2_with_var_test", variationsMap: new Dictionary <string, OptimizelyVariation> { { "variation_2", new OptimizelyVariation( id: "1423767505", key: "variation_2", featureEnabled: true, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable( id: "11535264367", key: "z", type: "integer", value: "150") } }) } } ) } }, variablesMap: new Dictionary <string, OptimizelyVariable> { { "z", new OptimizelyVariable(id: "11535264367", key: "z", type: "integer", value: "10") } }) } }; OptimizelyConfig optimizelyConfig = new OptimizelyConfigService(datafileProjectConfig).GetOptimizelyConfig(); OptimizelyConfig expectedOptimizelyConfig = new OptimizelyConfig(datafileProjectConfig.Revision, experimentsMap, featuresMap); Assert.IsTrue(TestData.CompareObjects(optimizelyConfig, expectedOptimizelyConfig)); }