public void SplitReturnDefaultTreatmentsWhenNoRolloutCondition() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.WHITELIST, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" }, } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(conditionWithLogic.partitions.Count, result.treatments.Count); }
public void SplitWhenCacheIsNotInstancedShouldReturnNull() { //Arrange var manager = new SplitManager(null); //Act var result = manager.Split("name"); //Assert Assert.IsNull(result); }
public void SplitReturnsNullWhenCacheIsNull() { //Arrange var manager = new SplitManager(null); //Act var result = manager.Split("test1"); //Assert Assert.IsNull(result); }
public void SplitReturnsNullWhenInexistent() { //Arrange var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); var manager = new SplitManager(splitCache); //Act var result = manager.Split("test1"); //Assert Assert.IsNull(result); }
public void SplitWhenCacheIsNotInstancedShouldReturnNull() { //Arrange _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(null, _blockUntilReadyService.Object); //Act var result = manager.Split("name"); //Assert Assert.IsNull(result); }
public void SplitWithNullNameShouldReturnNull() { //Arrange _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split(null); //Assert Assert.IsNull(result); }
public void SplitReturnsNullWhenInexistent() { //Arrange var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split("test1"); //Assert Assert.IsNull(result); }
public void Split_WithConfigs_ReturnSuccessfully() { //Arrange var configurations = new Dictionary <string, string> { { "On", "\"Name = \"Test Config\"" } }; var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic, configurations = configurations }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic, configurations = configurations }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); manager.BlockUntilReady(1000); //Act var result1 = manager.Split("test1"); var result2 = manager.Split("test2"); var result3 = manager.Split("test3"); //Assert Assert.IsNotNull(result1); Assert.IsNotNull(result1.configs); Assert.IsNotNull(result2); Assert.IsNotNull(result2.configs); Assert.IsNotNull(result3); Assert.IsNull(result3.configs); }
public void SplitReturnSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.ROLLOUT, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 90, treatment = "on" }, new PartitionDefinition() { size = 10, treatment = "off" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(result.changeNumber, 10000); Assert.AreEqual(result.killed, false); Assert.AreEqual(result.trafficType, "user"); Assert.AreEqual(result.treatments.Count, 2); var firstTreatment = result.treatments[0]; Assert.AreEqual(firstTreatment, "on"); var secondTreatment = result.treatments[1]; Assert.AreEqual(secondTreatment, "off"); }
public void SplitReturnRolloutConditionTreatmentsSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.WHITELIST, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" }, } }; conditionsWithLogic.Add(conditionWithLogic); var conditionWithLogic2 = new ConditionWithLogic() { conditionType = ConditionType.ROLLOUT, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 90, treatment = "on" }, new PartitionDefinition() { size = 10, treatment = "off" }, } }; conditionsWithLogic.Add(conditionWithLogic2); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); var manager = new SplitManager(splitCache); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(result.treatments.Count, 2); var firstTreatment = result.treatments[0]; Assert.AreEqual(firstTreatment, "on"); var secondTreatment = result.treatments[1]; Assert.AreEqual(secondTreatment, "off"); }