コード例 #1
0
        public void EventTrackingAndReasonAreNotForcedIfFlagIsNotSetForMatchingRule()
        {
            var clause0 = ClauseBuilder.ShouldNotMatchUser(user);
            var clause1 = ClauseBuilder.ShouldMatchUser(user);
            var rule0   = new RuleBuilder().Id("id0").Variation(1).Clauses(clause0).TrackEvents(true).Build();
            var rule1   = new RuleBuilder().Id("id1").Variation(1).Clauses(clause1).TrackEvents(false).Build();
            var flag    = new FeatureFlagBuilder("flag")
                          .On(true)
                          .Rules(rule0, rule1)
                          .OffVariation(0)
                          .Variations(new JValue("off"), new JValue("on"))
                          .Build();

            featureStore.Upsert(VersionedDataKind.Features, flag);

            client.StringVariation("flag", user, "default");

            // It matched rule1, which has trackEvents: false, so we don't get the override behavior

            Assert.Equal(1, eventSink.Events.Count);
            var e = Assert.IsType <FeatureRequestEvent>(eventSink.Events[0]);

            Assert.False(e.TrackEvents);
            Assert.Null(e.Reason);
        }
コード例 #2
0
        public void FlagMatchesUserFromRules()
        {
            var user    = User.WithKey("userkey");
            var clause0 = ClauseBuilder.ShouldNotMatchUser(user);
            var clause1 = ClauseBuilder.ShouldMatchUser(user);
            var rule0   = new RuleBuilder().Id("ruleid0").Variation(2).Clauses(clause0).Build();
            var rule1   = new RuleBuilder().Id("ruleid1").Variation(2).Clauses(clause1).Build();
            var f       = FeatureFlagWithRules(rule0, rule1);

            var result = f.Evaluate(user, featureStore, EventFactory.Default);

            var expected = new EvaluationDetail <LdValue>(LdValue.Of("on"), 2,
                                                          EvaluationReason.RuleMatchReason(1, "ruleid1"));

            Assert.Equal(expected, result.Result);
            Assert.Equal(0, result.PrerequisiteEvents.Count);
        }