diff --git a/src/Pretzel.Logic/Templating/Jekyll/LiquidEngine.cs b/src/Pretzel.Logic/Templating/Jekyll/LiquidEngine.cs index f61d12e1b..d3c955d1c 100644 --- a/src/Pretzel.Logic/Templating/Jekyll/LiquidEngine.cs +++ b/src/Pretzel.Logic/Templating/Jekyll/LiquidEngine.cs @@ -62,6 +62,9 @@ private Hash CreatePageData(PageContext pageContext) y.Add("title", Context.Title); } + y.Add("previous", pageContext.Previous); + y.Add("next", pageContext.Next); + var x = Hash.FromAnonymousObject(new { site = contextDrop.ToHash(), diff --git a/src/Pretzel.Logic/Templating/JekyllEngineBase.cs b/src/Pretzel.Logic/Templating/JekyllEngineBase.cs index 61432ce36..e4995280e 100644 --- a/src/Pretzel.Logic/Templating/JekyllEngineBase.cs +++ b/src/Pretzel.Logic/Templating/JekyllEngineBase.cs @@ -58,12 +58,12 @@ public void Process(SiteContext siteContext, bool skipFileOnError = false) } } - private static Page GetNext(IList pages, int index) + private static Page GetPrevious(IList pages, int index) { return index < pages.Count - 1 ? pages[index + 1] : null; } - private static Page GetPrevious(IList pages, int index) + private static Page GetNext(IList pages, int index) { return index >= 1 ? pages[index - 1] : null; } diff --git a/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs b/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs index 19af15efe..5e932f2ff 100644 --- a/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs +++ b/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs @@ -1860,6 +1860,64 @@ public void The_File_Should_Display_The_Page_Url() } } + public class Given_Page_Has_Page_Previous_Url : BakingEnvironment + { + private const string PageContents = "---\r\n layout: nil \r\n---\r\n\r\n{{ page.previous.url }}"; + private const string ExpectedfileContents = "

/2015/01/22/previouspost.html

"; + + public override LiquidEngine Given() + { + var engine = new LiquidEngine(); + engine.Initialize(); + return engine; + } + + public override void When() + { + FileSystem.AddFile(@"C:\website\_posts\2015-02-22-post.md", new MockFileData(PageContents)); + FileSystem.AddFile(@"C:\website\_posts\2015-01-22-previouspost.md", new MockFileData("---\r\n layout: nil \r\n---\r\n\r\n")); + var generator = GetSiteContextGenerator(FileSystem); + var context = generator.BuildContext(@"C:\website\", @"D:\Result\_site", false); + Subject.FileSystem = FileSystem; + Subject.Process(context); + } + + [Fact] + public void The_File_Should_Display_The_Previous_Page_Url() + { + Assert.Equal(ExpectedfileContents, FileSystem.File.ReadAllText(@"D:\Result\_site\2015\02\22\post.html").RemoveWhiteSpace()); + } + } + + public class Given_Page_Has_Page_Next_Url : BakingEnvironment + { + private const string PageContents = "---\r\n layout: nil \r\n---\r\n\r\n{{ page.next.url }}"; + private const string ExpectedfileContents = "

/2015/03/22/nextpost.html

"; + + public override LiquidEngine Given() + { + var engine = new LiquidEngine(); + engine.Initialize(); + return engine; + } + + public override void When() + { + FileSystem.AddFile(@"C:\website\_posts\2015-02-22-post.md", new MockFileData(PageContents)); + FileSystem.AddFile(@"C:\website\_posts\2015-03-22-nextpost.md", new MockFileData("---\r\n layout: nil \r\n---\r\n\r\n")); + var generator = GetSiteContextGenerator(FileSystem); + var context = generator.BuildContext(@"C:\website\", @"D:\Result\_site", false); + Subject.FileSystem = FileSystem; + Subject.Process(context); + } + + [Fact] + public void The_File_Should_Display_The_Next_Page_Url() + { + Assert.Equal(ExpectedfileContents, FileSystem.File.ReadAllText(@"D:\Result\_site\2015\02\22\post.html").RemoveWhiteSpace()); + } + } + [InlineData("date", @"cat1\cat2\2015\03\09\foobar-baz.html", "cat1,cat2")] [InlineData("date", @"2015\03\09\foobar-baz.html", "")] [InlineData("/:dashcategories/:year/:month/:day/:title.html", @"cat1-cat2\2015\03\09\foobar-baz.html", "cat1,cat2")]