예제 #1
0
        public void TestGetForcedVariationWithInvalidVariation()
        {
            string userId = "testUser1";
            string invalidVariationKey = "invalidVarKey";

            DecisionService decisionService = new DecisionService(BucketerMock.Object, ErrorHandlerMock.Object, ProjectConfig, null, LoggerMock.Object);

            var variations = new Variation[]
            {
                new Variation {
                    Id = "1", Key = "var1"
                }
            };
            var trafficAllocation = new TrafficAllocation[]
            {
                new TrafficAllocation {
                    EntityId = "1", EndOfRange = 1000
                }
            };

            var userIdToVariationKeyMap = new Dictionary <string, string>
            {
                { userId, invalidVariationKey }
            };

            var experiment = new Experiment
            {
                Id                = "1234",
                Key               = "exp_key",
                Status            = "Running",
                LayerId           = "1",
                AudienceIds       = new string[0],
                Variations        = variations,
                TrafficAllocation = trafficAllocation,
                ForcedVariations  = userIdToVariationKeyMap
            };

            Assert.IsNull(decisionService.GetWhitelistedVariation(experiment, userId));
            LoggerMock.Verify(l => l.Log(LogLevel.ERROR,
                                         string.Format("Variation \"{0}\" is not in the datafile. Not activating user \"{1}\".", invalidVariationKey, userId)),
                              Times.Once);

            BucketerMock.Verify(_ => _.Bucket(It.IsAny <ProjectConfig>(), It.IsAny <Experiment>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never);
        }
예제 #2
0
 public static void AreEqual(TrafficAllocation expected, TrafficAllocation actual)
 {
     Assert.AreEqual(expected.EndOfRange, actual.EndOfRange);
     Assert.AreEqual(expected.EntityId, actual.EntityId);
 }