Skip to content

Commit

Permalink
First stab at paging support for getchildren
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanforsberg committed Aug 6, 2013
1 parent b29a71f commit e1fb7a6
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.Linq;
using EPiServer.Core;
using NUnit.Framework;
using Shouldly;
using WhiteMagic.Tests.Pages;

namespace WhiteMagic.Tests.ContentRepository
{
public class when_getting_children_using_startindex_and_maxrows : TestBase
{
protected PageReference StartPageReference;
protected IEnumerable<PageData> Children;

public override void Given()
{
base.Given();

StartPageReference = ContentRepository.Publish<StartPage>(ContentReference.RootPage);

ContentRepository.Publish<StandardPage>(StartPageReference, "ChildPage1");
ContentRepository.Publish<StandardPage>(StartPageReference, "ChildPage2");
ContentRepository.Publish<StandardPage>(StartPageReference, "ChildPage3");
ContentRepository.Publish<StandardPage>(StartPageReference, "ChildPage4");
ContentRepository.Publish<StandardPage>(StartPageReference, "ChildPage5");
}
}

public class when_skipping_first_page_and_only_getting_one_page : when_getting_children_using_startindex_and_maxrows
{
public override void When()
{
base.When();

Children = ContentRepository.GetChildren<PageData>(StartPageReference, new LanguageSelector("en"), 2, 1);
}

[Test]
public void it_should_return_the_expected_page()
{
Children.First().PageName.ShouldBe("ChildPage3");
}

[Test]
public void it_should_only_return_one_page()
{
Children.Count().ShouldBe(1);
}
}
}
30 changes: 16 additions & 14 deletions src/WhiteMagic.Tests/InMemoryContentRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public IEnumerable<T> GetChildren<T>(ContentReference contentLink, ILanguageSele

public IEnumerable<T> GetChildren<T>(ContentReference contentLink, ILanguageSelector selector, int startIndex, int maxRows) where T : IContentData
{
return GetChildren(contentLink.ToPageReference(), -1, -1).OfType<T>();
return GetChildren(contentLink.ToPageReference(), startIndex, maxRows).OfType<T>();
}

public IEnumerable<ContentReference> GetDescendents(ContentReference contentLink)
Expand Down Expand Up @@ -187,23 +187,25 @@ public PageData CreateLanguageBranch(PageReference pageLink, ILanguageSelector s

private PageDataCollection GetChildren(PageReference pageLink, int startIndex, int maxRows)
{
List<IContent> children = new List<IContent>();
var children = new List<IContent>();

ChildrenEventArgs args = new ChildrenEventArgs(pageLink, children);
try
List<PageReference> childrenRefs;
if (_structure.TryGetValue(pageLink, out childrenRefs))
{
List<PageReference> childrenRefs;
if (_structure.TryGetValue(pageLink, out childrenRefs))
if (startIndex > -1)
{
foreach (PageReference link in childrenRefs)
{
children.Add(GetPage(link));
}
childrenRefs = new List<PageReference>(childrenRefs.Skip(startIndex));
}

if (maxRows > -1)
{
childrenRefs = new List<PageReference>(childrenRefs.Take(maxRows));
}

foreach (PageReference link in childrenRefs)
{
children.Add(GetPage(link));
}
}
catch
{

}

return new PageDataCollection(children);
Expand Down
1 change: 1 addition & 0 deletions src/WhiteMagic.Tests/WhiteMagic.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@
<ItemGroup>
<Compile Include="ContentExtensions.cs" />
<Compile Include="ContentRepositoryExtensions.cs" />
<Compile Include="ContentRepository\when_getting_children_using_startindex_and_maxrows.cs" />
<Compile Include="InMemoryContentRepository.cs" />
<Compile Include="InMemoryPermanentLinkMapper.cs" />
<Compile Include="Pages\StandardPage.cs" />
Expand Down

0 comments on commit e1fb7a6

Please sign in to comment.