public void TestGetOptimizelyConfigSDKAndEnvironmentKeyDefault() { var datafileProjectConfig = DatafileProjectConfig.Create(TestData.DuplicateRuleKeysDatafile, new NoOpLogger(), new ErrorHandler.NoOpErrorHandler()); var optimizelyConfigService = new OptimizelyConfigService(datafileProjectConfig); var optimizelyConfig = optimizelyConfigService.GetOptimizelyConfig(); Assert.AreEqual(optimizelyConfig.SDKKey, ""); Assert.AreEqual(optimizelyConfig.EnvironmentKey, ""); }
public void TestGetOptimizelyConfigWithDuplicateExperimentKeys() { var datafileProjectConfig = DatafileProjectConfig.Create(TestData.DuplicateExpKeysDatafile, new NoOpLogger(), new ErrorHandler.NoOpErrorHandler()); var optimizelyConfigService = new OptimizelyConfigService(datafileProjectConfig); var optimizelyConfig = optimizelyConfigService.GetOptimizelyConfig(); Assert.AreEqual(optimizelyConfig.ExperimentsMap.Count, 1); var experimentMapFlag1 = optimizelyConfig.FeaturesMap["flag1"].ExperimentsMap; //9300000007569 var experimentMapFlag2 = optimizelyConfig.FeaturesMap["flag2"].ExperimentsMap; // 9300000007573 Assert.AreEqual(experimentMapFlag1["targeted_delivery"].Id, "9300000007569"); Assert.AreEqual(experimentMapFlag2["targeted_delivery"].Id, "9300000007573"); }
public void TestGetOptimizelyConfigWithDuplicateRuleKeys() { var datafileProjectConfig = DatafileProjectConfig.Create(TestData.DuplicateRuleKeysDatafile, new NoOpLogger(), new ErrorHandler.NoOpErrorHandler()); var optimizelyConfigService = new OptimizelyConfigService(datafileProjectConfig); var optimizelyConfig = optimizelyConfigService.GetOptimizelyConfig(); Assert.AreEqual(optimizelyConfig.ExperimentsMap.Count, 0); var rolloutFlag1 = optimizelyConfig.FeaturesMap["flag_1"].DeliveryRules[0]; // 9300000004977, var rolloutFlag2 = optimizelyConfig.FeaturesMap["flag_2"].DeliveryRules[0]; // 9300000004979 var rolloutFlag3 = optimizelyConfig.FeaturesMap["flag_3"].DeliveryRules[0]; // 9300000004981 Assert.AreEqual(rolloutFlag1.Id, "9300000004977"); Assert.AreEqual(rolloutFlag1.Key, "targeted_delivery"); Assert.AreEqual(rolloutFlag2.Id, "9300000004979"); Assert.AreEqual(rolloutFlag2.Key, "targeted_delivery"); Assert.AreEqual(rolloutFlag3.Id, "9300000004981"); Assert.AreEqual(rolloutFlag3.Key, "targeted_delivery"); }
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 TestGetOptimizelyConfigServiceNullConfig() { OptimizelyConfig optimizelyConfig = new OptimizelyConfigService(null).GetOptimizelyConfig(); Assert.IsNull(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)); }