From df37fc85a33cd7ce933e8dcaf30e21d3fa1ef214 Mon Sep 17 00:00:00 2001 From: rolandbaer Date: Tue, 28 Feb 2017 21:50:11 +0100 Subject: [PATCH] Site with support of html_pages --- .../Templating/Context/SiteContext.cs | 9 ++++++ .../Templating/Jekyll/SiteContextDrop.cs | 1 + .../Context/SiteContextGeneratorTests.cs | 27 ++++++++++++++++++ .../Templating/Jekyll/LiquidEngineTests.cs | 28 +++++++++++++++++++ 4 files changed, 65 insertions(+) diff --git a/src/Pretzel.Logic/Templating/Context/SiteContext.cs b/src/Pretzel.Logic/Templating/Context/SiteContext.cs index d325e3aae..4756c3f9d 100644 --- a/src/Pretzel.Logic/Templating/Context/SiteContext.cs +++ b/src/Pretzel.Logic/Templating/Context/SiteContext.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; namespace Pretzel.Logic.Templating.Context { @@ -22,6 +23,14 @@ public class SiteContext public List Pages { get; set; } + public List Html_Pages + { + get + { + return Pages.Where(p => p.Url != null && p.Url.EndsWith(".html")).ToList(); + } + } + public string Title { get diff --git a/src/Pretzel.Logic/Templating/Jekyll/SiteContextDrop.cs b/src/Pretzel.Logic/Templating/Jekyll/SiteContextDrop.cs index 93a53b0c8..ac23346e5 100644 --- a/src/Pretzel.Logic/Templating/Jekyll/SiteContextDrop.cs +++ b/src/Pretzel.Logic/Templating/Jekyll/SiteContextDrop.cs @@ -33,6 +33,7 @@ public Hash ToHash() var x = Hash.FromDictionary(context.Config.ToDictionary()); x["posts"] = context.Posts.Select(p => p.ToHash()).ToList(); x["pages"] = context.Pages.Select(p => p.ToHash()).ToList(); + x["html_pages"] = context.Html_Pages.Select(p => p.ToHash()).ToList(); x["title"] = context.Title; x["tags"] = context.Tags; x["categories"] = context.Categories; diff --git a/src/Pretzel.Tests/Templating/Context/SiteContextGeneratorTests.cs b/src/Pretzel.Tests/Templating/Context/SiteContextGeneratorTests.cs index cb43c8a34..f79953a9e 100644 --- a/src/Pretzel.Tests/Templating/Context/SiteContextGeneratorTests.cs +++ b/src/Pretzel.Tests/Templating/Context/SiteContextGeneratorTests.cs @@ -132,6 +132,33 @@ public void pages_with_front_matter_get_processed() Assert.IsType(siteContext.Pages[0]); } + [Fact] + public void pages_with_html_extensions_are_included_in_html_pages() + { + // arrange + fileSystem.AddFile(@"C:\TestSite\SubFolder\SomeFile.html", new MockFileData(ToPageContent("# Title"))); + + // act + var siteContext = generator.BuildContext(@"C:\TestSite", @"C:\TestSite\_site", false); + + // assert + Assert.Equal(1, siteContext.Html_Pages.Count); + Assert.IsType(siteContext.Html_Pages[0]); + } + + [Fact] + public void pages_without_html_extensions_are_not_included_in_html_pages() + { + // arrange + fileSystem.AddFile(@"C:\TestSite\SubFolder\SomeFile.xml", new MockFileData(ToPageContent("# Title"))); + + // act + var siteContext = generator.BuildContext(@"C:\TestSite", @"C:\TestSite\_site", false); + + // assert + Assert.Equal(0, siteContext.Html_Pages.Count); + } + [Fact] public void site_context_includes_pages_in_same_folder() { diff --git a/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs b/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs index d0f79f497..14179f228 100644 --- a/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs +++ b/src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs @@ -2241,5 +2241,33 @@ public override ITag CreateTag() } } } + + public class Given_Page_Uses_Html_Pages : BakingEnvironment + { + private const string TemplateContents = "{{ content }}"; + private const string PageContents = "---\r\n layout: default \r\n---\r\n\r\n{{ site.html_pages | size }}"; + private const string ExpectedfileContents = "1"; + + public override LiquidEngine Given() + { + return new LiquidEngine(); + } + + public override void When() + { + FileSystem.AddFile(@"C:\website\_layouts\default.html", new MockFileData(TemplateContents)); + FileSystem.AddFile(@"C:\website\index.html", new MockFileData(PageContents)); + var generator = GetSiteContextGenerator(FileSystem); + var context = generator.BuildContext(@"C:\website\", @"C:\website\_site", false); + Subject.FileSystem = FileSystem; + Subject.Process(context); + } + + [Fact] + public void The_Output_Should_Have_The_Html_Pages_Size_Value() + { + Assert.Equal(ExpectedfileContents, FileSystem.File.ReadAllText(@"C:\website\_site\index.html").RemoveWhiteSpace()); + } + } } }