public static TestInfo FromTestCombination(TestCombination combination) { if (combination?.Testset == null) { return(null); } return(new TestInfo { Id = combination.Testset.Id, Name = combination.Testset.Name, Combination = combination.Combination, Variables = combination.Testset.Variables.Select(v => new TestVariableInfo { Id = v.Id, Label = v.Label, Values = v.Values.Select(vv => new TestValueInfo { Id = vv.Id, Label = vv.Label, IsOrginal = vv.IsOriginal }).ToList() }).ToList() }); }
public override void Apply(T ruleContext) { FinishTestRuleContext finishTestRuleContext = ruleContext as FinishTestRuleContext; if (finishTestRuleContext != null) { ITestConfiguration configuration = finishTestRuleContext.Configuration; IEnumerable <TestExperience> testExperience = configuration.Experiences; IContentTestPerformance performanceForTest = finishTestRuleContext.ContentTestPerformanceFactory.GetPerformanceForTest(configuration); StopTestArgs stopTestArgs = new StopTestArgs(); stopTestArgs.Configuration = finishTestRuleContext.Configuration; List <float> list = new List <float>(); List <TestExperience> listTestExperience = new List <TestExperience>(); foreach (var experience in testExperience) { SiteStatistics siteStatistics = performanceForTest.GetExperienceSiteStatistics(experience.Combination); list.Add(siteStatistics.BounceRate); listTestExperience.Add(experience); } if (list.Count != 0) { int indexOfMinBounceRate = GetIndexOfLowestBounceRate(list); if (indexOfMinBounceRate != 0) { TestCombination testCombination = new TestCombination(listTestExperience[indexOfMinBounceRate].Combination, configuration.TestSet); if (testCombination == null) { return; } using (new Sitecore.Data.Items.EditContext(configuration.TestDefinitionItem)) { configuration.TestDefinitionItem.WinnerCombination = testCombination.Combination.MultiplexToString("-"); } Sitecore.Data.Items.Item item = configuration.TestDefinitionItem; Sitecore.Data.Database[] targets = PublishingHelper.GetTargets(item).ToArray <Sitecore.Data.Database>(); Sitecore.Publishing.PublishManager.PublishItem(item, targets, item.Languages, true, true); stopTestArgs.Combination = testCombination; SettingsDependantPipeline <StopTestPipeline, StopTestArgs> .Instance.Run(stopTestArgs); } } } }