Skip to content
This repository has been archived by the owner on Jun 25, 2020. It is now read-only.

Site with support of html_pages #319

Merged
merged 1 commit into from
Mar 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/Pretzel.Logic/Templating/Context/SiteContext.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;

namespace Pretzel.Logic.Templating.Context
{
Expand All @@ -22,6 +23,14 @@ public class SiteContext

public List<Page> Pages { get; set; }

public List<Page> Html_Pages
{
get
{
return Pages.Where(p => p.Url != null && p.Url.EndsWith(".html")).ToList();
}
}

public string Title
{
get
Expand Down
1 change: 1 addition & 0 deletions src/Pretzel.Logic/Templating/Jekyll/SiteContextDrop.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
27 changes: 27 additions & 0 deletions src/Pretzel.Tests/Templating/Context/SiteContextGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,33 @@ public void pages_with_front_matter_get_processed()
Assert.IsType<Page>(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<Page>(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()
{
Expand Down
28 changes: 28 additions & 0 deletions src/Pretzel.Tests/Templating/Jekyll/LiquidEngineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2241,5 +2241,33 @@ public override ITag CreateTag()
}
}
}

public class Given_Page_Uses_Html_Pages : BakingEnvironment<LiquidEngine>
{
private const string TemplateContents = "<html><body>{{ content }}</body></html>";
private const string PageContents = "---\r\n layout: default \r\n---\r\n\r\n{{ site.html_pages | size }}";
private const string ExpectedfileContents = "<html><body>1</body></html>";

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());
}
}
}
}