public void DecideIncludeReasonsDecideOptions() { var flagKey = "invalid_key"; var user = Optimizely.CreateUserContext(UserID); user.SetAttribute("browser_type", "chrome"); var decision = user.Decide(flagKey); Assert.True(decision.Reasons.Length == 1); Assert.AreEqual(decision.Reasons[0], DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, flagKey)); var decideOptions = new OptimizelyDecideOption[] { OptimizelyDecideOption.INCLUDE_REASONS }; decision = user.Decide(flagKey, decideOptions); Assert.True(decision.Reasons.Length == 1); Assert.AreEqual(decision.Reasons[0], DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, flagKey)); flagKey = "multi_variate_feature"; decision = user.Decide(flagKey); Assert.True(decision.Reasons.Length == 0); Assert.AreEqual(decision.VariationKey, "Gred"); Assert.False(decision.Enabled); Assert.AreEqual(decision.RuleKey, "test_experiment_multivariate"); Assert.AreEqual(decision.FlagKey, flagKey); Assert.AreNotEqual(decision.UserContext, user); Assert.IsTrue(TestData.CompareObjects(decision.UserContext, user)); Assert.True(decision.Reasons.IsNullOrEmpty()); decision = user.Decide(flagKey, decideOptions); Assert.True(decision.Reasons.Length > 0); Assert.AreEqual("User [testUserID] is in variation [Gred] of experiment [test_experiment_multivariate].", decision.Reasons[1]); Assert.AreEqual("The user \"testUserID\" is bucketed into experiment \"test_experiment_multivariate\" of feature \"multi_variate_feature\".", decision.Reasons[2]); }
public void TestNewDecisionReasonWithoutIncludeReasons() { var decisionReasons = new DecisionReasons(); decisionReasons.AddError(DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, "invalid_key")); Assert.AreEqual(decisionReasons.ToReport()[0], "No flag was found for key \"invalid_key\"."); decisionReasons.AddError(DecisionMessage.Reason(DecisionMessage.VARIABLE_VALUE_INVALID, "invalid_key")); Assert.AreEqual(decisionReasons.ToReport()[1], "Variable value for key \"invalid_key\" is invalid or wrong type."); decisionReasons.AddInfo("Some info message."); Assert.AreEqual(decisionReasons.ToReport().Count, 2); }
public void TestNewDecisionReasonWithIncludeReasons() { var decisionReasons = new DecisionReasons(); var decideOptions = new OptimizelyDecideOption[] { OptimizelyDecideOption.INCLUDE_REASONS }; decisionReasons.AddError(DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, "invalid_key")); Assert.AreEqual(decisionReasons.ToReport(decideOptions.Contains(OptimizelyDecideOption.INCLUDE_REASONS))[0], "No flag was found for key \"invalid_key\"."); decisionReasons.AddError(DecisionMessage.Reason(DecisionMessage.VARIABLE_VALUE_INVALID, "invalid_key")); Assert.AreEqual(decisionReasons.ToReport(decideOptions.Contains(OptimizelyDecideOption.INCLUDE_REASONS))[1], "Variable value for key \"invalid_key\" is invalid or wrong type."); decisionReasons.AddInfo("Some info message."); Assert.AreEqual(decisionReasons.ToReport(decideOptions.Contains(OptimizelyDecideOption.INCLUDE_REASONS))[2], "Some info message."); }
public void DecideInvalidFlagKey() { var flagKey = "invalid_feature"; var user = Optimizely.CreateUserContext(UserID); user.SetAttribute("browser_type", "chrome"); var decisionExpected = OptimizelyDecision.NewErrorDecision( flagKey, user, DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, flagKey), ErrorHandlerMock.Object, LoggerMock.Object); var decision = user.Decide(flagKey); Assert.IsTrue(TestData.CompareObjects(decision, decisionExpected)); }