Skip to content

Commit 32808d6

Browse files
msohailhussainmikeproeng37
authored andcommitted
GetVariation should return variation object. (#41)
1 parent 674c7c9 commit 32808d6

File tree

5 files changed

+109
-100
lines changed

5 files changed

+109
-100
lines changed

OptimizelySDK.DemoApp/Controllers/DemoController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public ActionResult Shop()
132132

133133
return View(new DemoViewModel
134134
{
135-
Products = GetProducts(variation).ToArray(),
135+
Products = GetProducts(variation?.Key).ToArray(),
136136
CurrentVisitor = visitor,
137137
Message = TempData.ContainsKey("Message") ? (string)TempData["Message"] : null,
138138
});

OptimizelySDK.Tests/DecisionServiceTest.cs

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ public class DecisionServiceTest
4343
private Variation WhitelistedVariation;
4444
private DecisionService DecisionService;
4545

46+
private Variation VariationWithKeyControl;
47+
private Variation VariationWithKeyVariation;
48+
4649
[SetUp]
4750
public void SetUp()
4851
{
@@ -59,6 +62,9 @@ public void SetUp()
5962
DecisionService = new DecisionService(new Bucketer(LoggerMock.Object), ErrorHandlerMock.Object, ProjectConfig, null, LoggerMock.Object);
6063

6164
DecisionServiceMock = new Mock<DecisionService>(BucketerMock.Object, ErrorHandlerMock.Object, ProjectConfig, null, LoggerMock.Object) { CallBase = true };
65+
66+
VariationWithKeyControl = ProjectConfig.GetVariationFromKey("test_experiment", "control");
67+
VariationWithKeyVariation = ProjectConfig.GetVariationFromKey("test_experiment", "variation");
6268
}
6369

6470
[Test]
@@ -349,27 +355,26 @@ public void TestGetVariationUserWithSetForcedVariation()
349355
optlyObject.Activate(experimentKey, userId, userAttributes);
350356

351357
// confirm normal bucketing occurs before setting the forced variation
352-
var actualVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributes);
353-
354-
Assert.AreEqual(expectedVariationKey, actualVariationKey);
358+
var actualVariation = optlyObject.GetVariation(experimentKey, userId, userAttributes);
359+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation));
355360

356361
// test valid experiment
357362
Assert.IsTrue(optlyObject.SetForcedVariation(experimentKey, userId, expectedForcedVariationKey), string.Format(@"Set variation to ""{0}"" failed.", expectedForcedVariationKey));
358363

359-
var actualForcedVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributes);
360-
Assert.AreEqual(expectedForcedVariationKey, actualForcedVariationKey);
364+
var actualForcedVariation = optlyObject.GetVariation(experimentKey, userId, userAttributes);
365+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyVariation, actualForcedVariation));
361366

362367
// clear forced variation and confirm that normal bucketing occurs
363368
Assert.IsTrue(optlyObject.SetForcedVariation(experimentKey, userId, null));
364369

365-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributes);
366-
Assert.AreEqual(expectedVariationKey, actualVariationKey);
370+
actualVariation = optlyObject.GetVariation(experimentKey, userId, userAttributes);
371+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation));
367372

368373
// check that a paused experiment returns null
369374
Assert.IsTrue(optlyObject.SetForcedVariation(pausedExperimentKey, userId, expectedForcedVariationKey), string.Format(@"Set variation to ""{0}"" failed.", expectedForcedVariationKey));
370-
actualForcedVariationKey = optlyObject.GetVariation(pausedExperimentKey, userId, userAttributes);
375+
actualForcedVariation = optlyObject.GetVariation(pausedExperimentKey, userId, userAttributes);
371376

372-
Assert.IsNull(actualForcedVariationKey);
377+
Assert.IsNull(actualForcedVariation);
373378
}
374379

375380
[Test]
@@ -408,33 +413,33 @@ public void TestGetVariationWithBucketingId()
408413
var optlyObject = new Optimizely(TestData.Datafile, new ValidEventDispatcher(), LoggerMock.Object);
409414

410415
// confirm normal bucketing occurs before setting the bucketing ID
411-
var actualVariationKey = optlyObject.GetVariation(experimentKey, userId, testUserAttributes);
412-
Assert.AreEqual(variationKeyControl, actualVariationKey);
416+
var actualVariation = optlyObject.GetVariation(experimentKey, userId, testUserAttributes);
417+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation));
413418

414419
// confirm valid bucketing with bucketing ID set in attributes
415-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
416-
Assert.AreEqual(variationKeyVariation, actualVariationKey);
420+
actualVariation = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
421+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyVariation, actualVariation));
417422

418423
// check invalid audience with bucketing ID
419-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, invalidUserAttributesWithBucketingId);
420-
Assert.AreEqual(null, actualVariationKey);
424+
actualVariation = optlyObject.GetVariation(experimentKey, userId, invalidUserAttributesWithBucketingId);
425+
Assert.Null(actualVariation);
421426

422427
// check null audience with bucketing Id
423-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, null);
424-
Assert.AreEqual(null, actualVariationKey);
428+
actualVariation = optlyObject.GetVariation(experimentKey, userId, null);
429+
Assert.Null(actualVariation);
425430

426431
// test that an experiment that's not running returns a null variation
427-
actualVariationKey = optlyObject.GetVariation(pausedExperimentKey, userId, userAttributesWithBucketingId);
428-
Assert.AreEqual(null, actualVariationKey);
432+
actualVariation = optlyObject.GetVariation(pausedExperimentKey, userId, userAttributesWithBucketingId);
433+
Assert.Null(actualVariation);
429434

430435
// check forced variation
431436
Assert.IsTrue(optlyObject.SetForcedVariation(experimentKey, userId, variationKeyControl), string.Format("Set variation to \"{0}\" failed.", variationKeyControl));
432-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
433-
Assert.AreEqual(variationKeyControl, actualVariationKey);
437+
actualVariation = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
438+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation));
434439

435440
// check whitelisted variation
436-
actualVariationKey = optlyObject.GetVariation(experimentKey, testUserIdWhitelisted, userAttributesWithBucketingId);
437-
Assert.AreEqual(variationKeyControl, actualVariationKey);
441+
actualVariation = optlyObject.GetVariation(experimentKey, testUserIdWhitelisted, userAttributesWithBucketingId);
442+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation));
438443

439444
var bucketerMock = new Mock<Bucketer>(LoggerMock.Object);
440445
var decision = new Decision("7722370027");
@@ -446,8 +451,8 @@ public void TestGetVariationWithBucketingId()
446451
UserProfileServiceMock.Setup(up => up.Lookup(userId)).Returns(storedUserProfile.ToMap());
447452
DecisionService decisionService = new DecisionService(bucketerMock.Object, ErrorHandlerMock.Object, ValidProjectConfig, UserProfileServiceMock.Object, LoggerMock.Object);
448453

449-
actualVariationKey = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
450-
Assert.AreEqual(variationKeyControl, actualVariationKey, string.Format("Variation \"{0}\" does not match expected user profile variation \"{1}\".", actualVariationKey, variationKeyControl));
454+
actualVariation = optlyObject.GetVariation(experimentKey, userId, userAttributesWithBucketingId);
455+
Assert.IsTrue(TestData.CompareObjects(VariationWithKeyControl, actualVariation), string.Format("Variation \"{0}\" does not match expected user profile variation \"{1}\".", actualVariation?.Key, variationKeyControl));
451456
}
452457

453458
#region GetVariationForFeatureExperiment Tests

0 commit comments

Comments
 (0)