public void SetsContextItem()
        {
            using (var db = new Db()
            {
                new DbItem("page1"),
                new DbItem("page2")
            })
            {
                var page1 = db.GetItem("/sitecore/content/page1");
                var page2 = db.GetItem("/sitecore/content/page2");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1, Source = "./*"
                };

                var ctx    = new GetLookupsourceItemsRuleContext(args);
                var action = new SetQueryContextItemAction <GetLookupsourceItemsRuleContext>()
                {
                    NewContextItemId = page2.ID.ToString()
                };

                action.Apply(ctx);

                ctx.Args.Item.ID.Should().Be(page2.ID);
            }
        }
        public void ReplacesToken()
        {
            using (var db = new Db()
            {
                new DbItem("Home")
                {
                    new DbItem("page1"),
                    new DbItem("page2")
                }
            })
            {
                var home  = db.GetItem("/sitecore/content/home");
                var page1 = db.GetItem("/sitecore/content/home/page1");
                var page2 = db.GetItem("/sitecore/content/home/page2");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1, Source = "{ThisPage}/afolder"
                };

                var ctx    = new GetLookupsourceItemsRuleContext(args);
                var action = new ReplaceTokenWithItemPathAction <GetLookupsourceItemsRuleContext>()
                {
                    Token     = "ThisPage",
                    NewItemId = page2.ID.ToString()
                };

                action.Apply(ctx);

                ctx.Args.Source.Should().BeEquivalentTo("/sitecore/content/home/page2/afolder");
            }
        }
        public void MatchesToken()
        {
            using (var db = new Db()
            {
                new DbItem("page1"), new DbItem("page2")
            })
            {
                var page1 = db.GetItem("/sitecore/content/page1");
                var page2 = db.GetItem("/sitecore/content/page2");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1, Source = "{Home}/page1"
                };

                var context   = new GetLookupsourceItemsRuleContext(args);
                var condition = new QueryContainsTokenCondition <GetLookupsourceItemsRuleContext>()
                {
                    Token = "Home"
                };

                var ruleStack = new RuleStack();

                condition.Evaluate(context, ruleStack);

                ruleStack.Should().HaveCount(1);
                ruleStack.Pop().Should().Be(true);
            }
        }
        public void AbortsRuleProcessing()
        {
            using (var db = new Db()
            {
                new DbItem("page1"),
                new DbItem("page2")
            })
            {
                var page1 = db.GetItem("/sitecore/content/page1");
                var page2 = db.GetItem("/sitecore/content/page2");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1, Source = "./*"
                };

                var ctx    = new GetLookupsourceItemsRuleContext(args);
                var action = new ForceQueryResultAction <GetLookupsourceItemsRuleContext>()
                {
                    ResultItemId = page2.ID.ToString()
                };

                action.Apply(ctx);

                ctx.IsAborted.Should().BeTrue();
            }
        }
예제 #5
0
        public void DetectsItemFieldTokenWithoutFieldName()
        {
            using (var db = new Db()
            {
                new DbItem("page1"), new DbItem("page2")
            })
            {
                var page1 = db.GetItem("/sitecore/content/page1");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1, Source = "{ItemField:FullName}"
                };

                var context   = new GetLookupsourceItemsRuleContext(args);
                var condition = new QueryContainsTokenCondition <GetLookupsourceItemsRuleContext>()
                {
                    Token = "ItemField"
                };

                var ruleStack = new RuleStack();

                condition.Evaluate(context, ruleStack);

                ruleStack.Should().HaveCount(1);
                ruleStack.Pop().Should().Be(true);
            }
        }
예제 #6
0
        public void ReturnsFalseForNullQuery()
        {
            using (var db = new Db()
            {
                new DbItem("page1"), new DbItem("page2")
            })
            {
                var page1 = db.GetItem("/sitecore/content/page1");

                var args = new GetLookupSourceItemsArgs()
                {
                    Item = page1
                };

                var context   = new GetLookupsourceItemsRuleContext(args);
                var condition = new QueryContainsTokenCondition <GetLookupsourceItemsRuleContext>()
                {
                    Token = "ItemField"
                };

                var ruleStack = new RuleStack();

                condition.Evaluate(context, ruleStack);

                ruleStack.Should().HaveCount(1);
                ruleStack.Pop().Should().Be(false);
            }
        }
        public void SetsResult()
        {
            using (var db = GetFakeDb())
            {
                var page = db.GetItem("/sitecore/content/page");

                var context = new GetLookupsourceItemsRuleContext(new GetLookupSourceItemsArgs()
                {
                    Item = page
                });

                var action = new ForceQueryResultAction <GetLookupsourceItemsRuleContext>()
                {
                    ResultItemId = page.ID.ToString()
                };
                action.Apply(context);

                context.Args.Result.Count.Should().Be(1);
                context.Args.Result[0].ID.Should().Be(page.ID);
            }
        }
        public void AbortsRulesExecution()
        {
            using (var db = GetFakeDb())
            {
                var page  = db.GetItem("/sitecore/content/page");
                var page2 = db.GetItem("/sitecore/content/page2");

                var context = new GetLookupsourceItemsRuleContext(new GetLookupSourceItemsArgs()
                {
                    Item   = page,
                    Result = { page2 }
                });

                var action = new ForceQueryResultAction <GetLookupsourceItemsRuleContext>()
                {
                    ResultItemId = page.ID.ToString()
                };
                action.Apply(context);

                context.IsAborted.Should().BeTrue();
            }
        }