From b29a71f2790fe510377b55e4e6117a82d894d64c Mon Sep 17 00:00:00 2001 From: Stefan Forsberg Date: Tue, 6 Aug 2013 18:00:27 +0200 Subject: [PATCH 1/4] Removed page events --- .../InMemoryContentRepository.cs | 162 ++---------------- 1 file changed, 15 insertions(+), 147 deletions(-) diff --git a/src/WhiteMagic.Tests/InMemoryContentRepository.cs b/src/WhiteMagic.Tests/InMemoryContentRepository.cs index faf1c98..8023da1 100644 --- a/src/WhiteMagic.Tests/InMemoryContentRepository.cs +++ b/src/WhiteMagic.Tests/InMemoryContentRepository.cs @@ -8,7 +8,6 @@ using EPiServer.Security; using EPiServer.SpecializedProperties; using EPiServer.Web; -using StructureMap; namespace WhiteMagic.Tests { @@ -137,27 +136,16 @@ public void DeleteChildren(ContentReference contentLink, bool forceDelete, Acces public void Delete(ContentReference pageLink, bool forceDelete, AccessLevel access) { - PageEventArgs args = new PageEventArgs(pageLink); - RaisePageEvent(DeletingPage, args); - RaisePageEvent(DeletedPage, args); - throw new NotImplementedException(); } public void DeleteLanguageBranch(ContentReference pageLink, string languageBranch, AccessLevel access) { - PageEventArgs args = new PageEventArgs(pageLink); - RaisePageEvent(DeletingPageLanguage, args); - RaisePageEvent(DeletedPageLanguage, args); - throw new NotImplementedException(); } public void Move(ContentReference pageLink, ContentReference destinationLink, AccessLevel requiredSourceAccess, AccessLevel requiredDestinationAccess) { - PageEventArgs pageArgs = new PageEventArgs(pageLink, destinationLink); - RaisePageEvent(MovingPage, pageArgs); - var page = GetPage(pageLink.ToPageReference()).CreateWritableClone(); _structure[page.ParentLink].Remove(pageLink.ToPageReference()); @@ -173,8 +161,6 @@ public void Move(ContentReference pageLink, ContentReference destinationLink, Ac { _structure[destinationLink.ToPageReference()].Add(page.PageLink); } - - RaisePageEvent(MovedPage, pageArgs); ; } public void MoveToWastebasket(ContentReference contentLink, string deletedBy) @@ -206,8 +192,6 @@ private PageDataCollection GetChildren(PageReference pageLink, int startIndex, i ChildrenEventArgs args = new ChildrenEventArgs(pageLink, children); try { - - RaiseChildrenEvent(LoadingChildren, args); List childrenRefs; if (_structure.TryGetValue(pageLink, out childrenRefs)) { @@ -219,12 +203,9 @@ private PageDataCollection GetChildren(PageReference pageLink, int startIndex, i } catch { - RaiseChildrenEvent(FailedLoadingChildren, args); - throw; + } - - RaiseChildrenEvent(LoadedChildren, args); - RaiseChildrenEvent(FinishedLoadingChildren, args); + return new PageDataCollection(children); } @@ -236,52 +217,31 @@ private PageData GetDefaultPageData(PageReference parentPageLink, int pageTypeID public TPageData GetDefaultPageData(PageReference parentPageLink) where TPageData : IContentData { - PageEventArgs args = new PageEventArgs(parentPageLink); - RaisePageEvent(LoadingDefaultPageData, args); - - var emptyPage = ConstructContentData(String.Empty, parentPageLink); - - RaisePageEvent(LoadedDefaultPageData, new PageEventArgs(emptyPage as PageData)); - - return emptyPage; + return ConstructContentData(String.Empty, parentPageLink); } private PageDataCollection GetLanguageBranches(PageReference pageLink) { - PageDataCollection languages = new PageDataCollection(); + var languages = new PageDataCollection(); languages.Add(GetPage(pageLink)); return languages; } private PageData GetPage(PageReference pageLink, ILanguageSelector selector) { - RaisePageEvent(LoadingPage, new PageEventArgs(pageLink)); - PageData page = null; - try + List pages; + if (!_pages.TryGetValue(pageLink, out pages)) { - List pages; - if (!_pages.TryGetValue(pageLink, out pages)) - { - throw new PageNotFoundException(pageLink); - } - page = pages.Last(); - LanguageSelector ls = selector as LanguageSelector; - if (ls != null && !String.IsNullOrEmpty(ls.LanguageBranch)) - { - page = pages.Find(p => p.LanguageBranch == ls.LanguageBranch); - } + throw new PageNotFoundException(pageLink); } - catch + page = pages.Last(); + LanguageSelector ls = selector as LanguageSelector; + if (ls != null && !String.IsNullOrEmpty(ls.LanguageBranch)) { - RaisePageEvent(FailedLoadingPage, new PageEventArgs(pageLink)); - throw; + page = pages.Find(p => p.LanguageBranch == ls.LanguageBranch); } - - PageEventArgs pageArgs = new PageEventArgs(page); - RaisePageEvent(LoadedPage, pageArgs); - RaisePageEvent(FinishedLoadingPage, pageArgs); - + return page; } @@ -305,61 +265,38 @@ public PageReference Save(PageData page, SaveAction action, AccessLevel access) page.PageGuid = Guid.NewGuid(); } - PageEventArgs pageArgs = new PageEventArgs(page); - RaisePageEvent(SavingPage, pageArgs); - - if (!_pages.ContainsKey(page.PageLink)) - { - RaisePageEvent(CreatingPage, pageArgs); - } - + if ((action & SaveAction.CheckIn) == SaveAction.CheckIn) { - RaisePageEvent(CheckingInPage, pageArgs); - page["PagePendingPublish"] = true; - - RaisePageEvent(CheckedInPage, pageArgs); } if ((action & SaveAction.Publish) == SaveAction.Publish) { - RaisePageEvent(PublishingPage, pageArgs); - page["PagePendingPublish"] = false; page["PageWorkStatus"] = VersionStatus.Published; page.Changed = DateTime.Now; - - RaisePageEvent(PublishedPage, pageArgs); } if ((action & SaveAction.ForceCurrentVersion) == SaveAction.ForceCurrentVersion) { - RaisePageEvent(PublishingPage, pageArgs); - page["PagePendingPublish"] = false; page["PageWorkStatus"] = VersionStatus.Published; page.Changed = DateTime.Now; - - RaisePageEvent(PublishedPage, pageArgs); } if ((action & SaveAction.ForceNewVersion) == SaveAction.ForceNewVersion) { - RaisePageEvent(PublishingPage, pageArgs); - page["PagePendingPublish"] = false; page["PageWorkStatus"] = VersionStatus.Published; page.Changed = DateTime.Now; - - RaisePageEvent(PublishedPage, pageArgs); } try { if (String.IsNullOrEmpty(page.LinkURL)) { - page.LinkURL = "/templates/Page.aspx?id=" + page.PageLink.ToString(); + page.LinkURL = "/templates/Page.aspx?id=" + page.PageLink; } } catch @@ -370,12 +307,10 @@ public PageReference Save(PageData page, SaveAction action, AccessLevel access) if (!_pages.ContainsKey(page.PageLink)) { _pages[page.PageLink] = new List(); - RaisePageEvent(CreatedPage, pageArgs); } _pages[page.PageLink].Add(page); - RaisePageEvent(SavedPage, pageArgs); if (!PageReference.IsNullOrEmpty(page.ParentLink)) { @@ -407,22 +342,6 @@ private PageData GetPage(PageReference pageLink) return pages.Last().Copy(); } - private void RaisePageEvent(PageEventHandler pageEvent, PageEventArgs e) - { - if (pageEvent != null) - { - pageEvent(this, e); - } - } - - private void RaiseChildrenEvent(ChildrenEventHandler childrenEvent, ChildrenEventArgs e) - { - if (childrenEvent != null) - { - childrenEvent(this, e); - } - } - private TPageData ConstructContentData(string pageName, PageReference parentLink) where TPageData : IContentData { @@ -497,61 +416,10 @@ private void InitBlocks(object page) } } - #region Events - public event PageEventHandler LoadingPage; - - public event PageEventHandler LoadedPage; - - public event PageEventHandler FinishedLoadingPage; - - public event PageEventHandler FailedLoadingPage; - - public event PageEventHandler LoadingDefaultPageData; - - public event PageEventHandler LoadedDefaultPageData; - - public event PageEventHandler PublishingPage; - - public event PageEventHandler PublishedPage; - - public event PageEventHandler CheckingInPage; - - public event PageEventHandler CheckedInPage; - - public event PageEventHandler DeletingPage; - - public event PageEventHandler DeletedPage; - - public event PageEventHandler DeletingPageLanguage; - - public event PageEventHandler DeletedPageLanguage; - - public event PageEventHandler MovingPage; - - public event PageEventHandler MovedPage; - - public event PageEventHandler CreatingPage; - - public event PageEventHandler CreatedPage; - - public event PageEventHandler SavingPage; - - public event PageEventHandler SavedPage; - - public event ChildrenEventHandler LoadingChildren; - - public event ChildrenEventHandler LoadedChildren; - - public event ChildrenEventHandler FinishedLoadingChildren; - - public event ChildrenEventHandler FailedLoadingChildren; - - #endregion - //Helper method to cast from PageData to T (if possible else null) private T EnsureTOrNull(PageData page) { - return new PageData[] { page }.OfType().FirstOrDefault(); + return new[] { page }.OfType().FirstOrDefault(); } } From e1fb7a6bfec9de685c4b899715821d3886839183 Mon Sep 17 00:00:00 2001 From: Stefan Forsberg Date: Tue, 6 Aug 2013 21:24:48 +0200 Subject: [PATCH 2/4] First stab at paging support for getchildren --- ...g_children_using_startindex_and_maxrows.cs | 50 +++++++++++++++++++ .../InMemoryContentRepository.cs | 30 +++++------ src/WhiteMagic.Tests/WhiteMagic.Tests.csproj | 1 + 3 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs diff --git a/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs b/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs new file mode 100644 index 0000000..322867f --- /dev/null +++ b/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs @@ -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 Children; + + public override void Given() + { + base.Given(); + + StartPageReference = ContentRepository.Publish(ContentReference.RootPage); + + ContentRepository.Publish(StartPageReference, "ChildPage1"); + ContentRepository.Publish(StartPageReference, "ChildPage2"); + ContentRepository.Publish(StartPageReference, "ChildPage3"); + ContentRepository.Publish(StartPageReference, "ChildPage4"); + ContentRepository.Publish(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(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); + } + } +} \ No newline at end of file diff --git a/src/WhiteMagic.Tests/InMemoryContentRepository.cs b/src/WhiteMagic.Tests/InMemoryContentRepository.cs index 8023da1..8fdd2a6 100644 --- a/src/WhiteMagic.Tests/InMemoryContentRepository.cs +++ b/src/WhiteMagic.Tests/InMemoryContentRepository.cs @@ -111,7 +111,7 @@ public IEnumerable GetChildren(ContentReference contentLink, ILanguageSele public IEnumerable GetChildren(ContentReference contentLink, ILanguageSelector selector, int startIndex, int maxRows) where T : IContentData { - return GetChildren(contentLink.ToPageReference(), -1, -1).OfType(); + return GetChildren(contentLink.ToPageReference(), startIndex, maxRows).OfType(); } public IEnumerable GetDescendents(ContentReference contentLink) @@ -187,23 +187,25 @@ public PageData CreateLanguageBranch(PageReference pageLink, ILanguageSelector s private PageDataCollection GetChildren(PageReference pageLink, int startIndex, int maxRows) { - List children = new List(); + var children = new List(); - ChildrenEventArgs args = new ChildrenEventArgs(pageLink, children); - try + List childrenRefs; + if (_structure.TryGetValue(pageLink, out childrenRefs)) { - List childrenRefs; - if (_structure.TryGetValue(pageLink, out childrenRefs)) + if (startIndex > -1) { - foreach (PageReference link in childrenRefs) - { - children.Add(GetPage(link)); - } + childrenRefs = new List(childrenRefs.Skip(startIndex)); + } + + if (maxRows > -1) + { + childrenRefs = new List(childrenRefs.Take(maxRows)); + } + + foreach (PageReference link in childrenRefs) + { + children.Add(GetPage(link)); } - } - catch - { - } return new PageDataCollection(children); diff --git a/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj b/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj index dc6862d..4dfea24 100644 --- a/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj +++ b/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj @@ -150,6 +150,7 @@ + From a35ebc4db04838609ff4ab7cc2062d1121c73505 Mon Sep 17 00:00:00 2001 From: Stefan Forsberg Date: Tue, 13 Aug 2013 19:51:21 +0200 Subject: [PATCH 3/4] Added another test for getting children with maxrows and startindex --- ...g_children_using_startindex_and_maxrows.cs | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs b/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs index 322867f..54fa9cc 100644 --- a/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs +++ b/src/WhiteMagic.Tests/ContentRepository/when_getting_children_using_startindex_and_maxrows.cs @@ -32,13 +32,13 @@ public override void When() { base.When(); - Children = ContentRepository.GetChildren(StartPageReference, new LanguageSelector("en"), 2, 1); + Children = ContentRepository.GetChildren(StartPageReference, new LanguageSelector("en"), 1, 1); } [Test] public void it_should_return_the_expected_page() { - Children.First().PageName.ShouldBe("ChildPage3"); + Children.First().PageName.ShouldBe("ChildPage2"); } [Test] @@ -47,4 +47,27 @@ public void it_should_only_return_one_page() Children.Count().ShouldBe(1); } } + + public class when_skipping_two_pagse_and_getting_two_pages : when_getting_children_using_startindex_and_maxrows + { + public override void When() + { + base.When(); + + Children = ContentRepository.GetChildren(StartPageReference, new LanguageSelector("en"), 2, 2); + } + + [Test] + public void it_should_return_the_expected_page() + { + Children.First().PageName.ShouldBe("ChildPage3"); + Children.Last().PageName.ShouldBe("ChildPage4"); + } + + [Test] + public void it_should_return_two_pages() + { + Children.Count().ShouldBe(2); + } + } } \ No newline at end of file From 6fb603e807e6ac97dc7cd4e715b086fd18e1bc6e Mon Sep 17 00:00:00 2001 From: Stefan Forsberg Date: Tue, 13 Aug 2013 20:05:14 +0200 Subject: [PATCH 4/4] Added log4net --- src/WhiteMagic.Tests/WhiteMagic.Tests.csproj | 3 +++ src/WhiteMagic.Tests/packages.config | 1 + 2 files changed, 4 insertions(+) diff --git a/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj b/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj index 4dfea24..983f31c 100644 --- a/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj +++ b/src/WhiteMagic.Tests/WhiteMagic.Tests.csproj @@ -127,6 +127,9 @@ False ..\packages\EPiServer.CMS.Core.7.0.586.4\lib\EPiServer.XmlRpc.dll + + ..\packages\log4net.1.2.10\lib\2.0\log4net.dll + ..\packages\NUnit.2.6.2\lib\nunit.framework.dll diff --git a/src/WhiteMagic.Tests/packages.config b/src/WhiteMagic.Tests/packages.config index 2eb319a..319002b 100644 --- a/src/WhiteMagic.Tests/packages.config +++ b/src/WhiteMagic.Tests/packages.config @@ -2,6 +2,7 @@ +