This post is part of a series of post where I try to implement an in memory IContentRepository. The tests for this posts are found here and here.
This post will look at the last members of the IContentLoader interface for a while, namely GetDescendents and GetAncestors.
IEnumerable<ContentReference> GetDescendents(ContentReference contentLink); IEnumerable<IContent> GetAncestors(ContentReference contentLink);
First thing that pop out is that Descendents returns a enumerable of ContentReference while ancestors returns an enumerable of IContent.
The happy path – GetDescendents
Not much to say about these methods since they are pretty self explanatory. GetDescendents return a list of content reference to the descendents of the sent in content reference. What is kind of interesting is the order in which these pages are returned. As far as I can tell they are returned in reverse hierarchy. That is, say we have the followin structure (page IDs) under the page we call GetDescendents from
P1
P2
P3
P4
P6
P5
P7
The resulting enumerable would have the order P7, P6 (represents hierarchy level 3), P5, P4, P2 (represents hierarchy level 2), P3, P1 (represents hierarchy level 1).
The happy path – GetAncestors
The ancestors are returned in the order of closest distance to the page requested up until the root page. So given the following structure
root
P1
P2
P3
when requesting ancestors for P3 it would return the pages P2, P1, root.