示例#1
0
        public void Test_0012_GetByID_Status_Is_Out_Of_Range()
        {
            this.LogIn();
            client.AddResponse(
                200,
                "{" +
                "    \"_id\" : \"ID-001\"," +
                "    \"description\" : \"Experiment for UT\"," +
                "    \"version\" : 2, " +
                "    \"status\" : 1000, " +
                "    \"conversionEvents\" : [ " +
                "        { \"name\" : \"Event-A\" }, " +
                "        { \"name\" : \"Event-B\" } " +
                "    ], " +
                "    \"variations\" : [ " +
                "        { " +
                "            \"name\" : \"A\", " +
                "            \"percentage\" : 50, " +
                "            \"variableSet\" : {\"message\" : \"set A\"} " +
                "        }, " +
                "        { " +
                "            \"name\" : \"B\", " +
                "            \"percentage\" : 50, " +
                "            \"variableSet\" : {\"message\" : \"set B\"} " +
                "        } " +
                "    ]" +
                "}");
            KiiExperiment experiment = KiiExperiment.GetByID(id);

            // verify Experiment
            Assert.AreEqual("ID-001", experiment.ID);
            Assert.AreEqual("Experiment for UT", experiment.Description);
            Assert.AreEqual(2, experiment.Version);
            Assert.AreEqual(KiiExperimentStatus.PAUSED, experiment.Status);

            // verify VariationA
            Variation variationA = experiment.GetVariationByName("A");

            Assert.AreEqual("A", variationA.Name);
            Assert.AreEqual(50, variationA.Percentage);
            Assert.AreEqual(
                new JsonObject("{\"message\" : \"set A\"}").ToString(),
                variationA.VariableSet.ToString());
            ConversionEvent eventA = experiment.GetConversionEventByName("Event-A");

            Assert.AreEqual("Event-A", eventA.Name);
            // verify VariationB
            Variation variationB = experiment.GetVariationByName("B");

            Assert.AreEqual("B", variationB.Name);
            Assert.AreEqual(50, variationB.Percentage);
            Assert.AreEqual(
                new JsonObject("{\"message\" : \"set B\"}").ToString(),
                variationB.VariableSet.ToString());
            ConversionEvent eventB = experiment.GetConversionEventByName("Event-B");

            Assert.AreEqual("Event-B", eventB.Name);
        }
示例#2
0
        public void Test_0005_GetVariationByName()
        {
            this.LogIn();
            client.AddResponse(
                200,
                CreateKiiExperimentAsJsonString(id, description, version, status,
                                                variationNameA, eventNameA, percentageA, variableSetA,
                                                variationNameB, eventNameB, percentageB, variableSetB,
                                                variationNameA)
                );
            KiiExperiment experiment = KiiExperiment.GetByID(id);
            Variation     variation  = experiment.GetVariationByName(variationNameB);

            Assert.AreEqual(experiment.Variations[1], variation);

            variation = experiment.GetVariationByName("hoge");
            Assert.IsNull(variation);
        }
        /// <summary>
        /// Creates instance of KiiExperiment from ApiResponse.
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <returns>The instance of KiiExperiment.</returns>
        /// <param name="response">API response.</param>
        private static KiiExperiment CreateFromResponse(ApiResponse response)
        {
            KiiExperiment experiment = null;

            try
            {
                JsonObject json = new JsonObject(response.Body);
                experiment              = new KiiExperiment();
                experiment.mId          = json.GetString("_id");
                experiment.mDescription = json.OptString("description", null);
                experiment.mVersion     = json.GetInt("version");
                experiment.mStatus      = ParseStatus(json);
                // parse conversionEvents
                JsonArray conversionEventsJson             = json.GetJsonArray("conversionEvents");
                List <ConversionEvent> conversionEventList = new List <ConversionEvent>();
                for (int i = 0; i < conversionEventsJson.Length(); i++)
                {
                    JsonObject conversionEventJson = conversionEventsJson.GetJsonObject(i);
                    conversionEventList.Add(new ConversionEvent(conversionEventJson.GetString("name")));
                }
                experiment.mConversionEvents = conversionEventList.ToArray();
                // parse variations
                JsonArray        variationsJson = json.GetJsonArray("variations");
                List <Variation> variationList  = new List <Variation>();
                for (int i = 0; i < variationsJson.Length(); i++)
                {
                    JsonObject variationJson = variationsJson.GetJsonObject(i);
                    string     varName       = variationJson.GetString("name");
                    int        percentage    = variationJson.GetInt("percentage");
                    JsonObject test          = variationJson.GetJsonObject("variableSet");
                    variationList.Add(new Variation(experiment, varName, percentage, test));
                }
                experiment.mVariations = variationList.ToArray();
                string chosenVariationName = json.OptString("chosenVariation", null);
                if (!Utils.IsEmpty(chosenVariationName))
                {
                    experiment.mChosenVariation = experiment.GetVariationByName(chosenVariationName);
                }
                return(experiment);
            }
            catch (Exception e)
            {
                throw new IllegalKiiBaseObjectFormatException(e.Message);
            }
        }