private void SetOptimizelyConfig(ProjectConfig projectConfig)
 {
     try
     {
         CurrentOptimizelyConfig = new OptimizelyConfigService(projectConfig).GetOptimizelyConfig();
     }
     catch (Exception ex)
     {
         Logger.Log(LogLevel.ERROR, ex.Message);
     }
 }
Пример #2
0
 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);
 }
Пример #3
0
        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>());
        }
Пример #4
0
        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>());
        }
Пример #5
0
        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);
        }
Пример #6
0
        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));
        }