From 3cd1592abcacecb50ee7c89588a36d300cb7ae86 Mon Sep 17 00:00:00 2001 From: Shannon Deminick Date: Tue, 28 Aug 2012 09:33:34 +0700 Subject: [PATCH] Added better support for Skip for DynamicDocument and DynamicNode and added unit tests. --- .../Dynamics/DynamicDocumentList.cs | 5 +++ .../DynamicDocumentTestsBase.cs | 31 ++++++++++++++++--- .../RazorDynamicNode/DynamicNodeList.cs | 5 +++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Dynamics/DynamicDocumentList.cs b/src/Umbraco.Core/Dynamics/DynamicDocumentList.cs index bf4462c212..1014c559ef 100644 --- a/src/Umbraco.Core/Dynamics/DynamicDocumentList.cs +++ b/src/Umbraco.Core/Dynamics/DynamicDocumentList.cs @@ -83,6 +83,11 @@ namespace Umbraco.Core.Dynamics result = new DynamicDocumentList(this.Take((int)args.First())); return true; } + if (name == "Skip") + { + result = new DynamicDocumentList(this.Skip((int)args.First())); + return true; + } if (name == "InGroupsOf") { int groupSize = 0; diff --git a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs index 9a82cc6939..b2760d4f94 100644 --- a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs +++ b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs @@ -36,16 +36,39 @@ namespace Umbraco.Tests.DynamicDocument } [Test] - public void Take() + public void HasProperty() { var asDynamic = GetDynamicNode(1173); - var ordered = asDynamic.Children.OrderBy("UpdateDate"); - var take = ordered.Take(2); + var hasProp = asDynamic.HasProperty("umbracoUrlAlias"); + + Assert.AreEqual(true, (bool)hasProp); + + } + + [Test] + public void Skip() + { + var asDynamic = GetDynamicNode(1173); + + var skip = asDynamic.Children.Skip(2); + var casted = (IEnumerable)skip; + + Assert.AreEqual(2, casted.Count()); + Assert.IsTrue(casted.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[]{1177, 1178})); + + } + + [Test] + public void Take() + { + var asDynamic = GetDynamicNode(1173); + + var take = asDynamic.Children.Take(2); var casted = (IEnumerable)take; Assert.AreEqual(2, casted.Count()); - + Assert.IsTrue(casted.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1174, 1176 })); } [Test] diff --git a/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNodeList.cs b/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNodeList.cs index 24e2101dae..3dde965e0f 100644 --- a/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNodeList.cs +++ b/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNodeList.cs @@ -84,6 +84,11 @@ namespace umbraco.MacroEngines result = new DynamicNodeList(this.Take((int)args.First())); return true; } + if (name == "Skip") + { + result = new DynamicNodeList(this.Skip((int)args.First())); + return true; + } if (name == "InGroupsOf") { int groupSize = 0;