Exemplo n.º 1
0
        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);
                    }
                }
            }
        }