diff --git a/src/Pretzel.Logic/Templating/Context/LinkHelper.cs b/src/Pretzel.Logic/Templating/Context/LinkHelper.cs index 39bc0d7a6..f04cbb9a1 100644 --- a/src/Pretzel.Logic/Templating/Context/LinkHelper.cs +++ b/src/Pretzel.Logic/Templating/Context/LinkHelper.cs @@ -19,7 +19,7 @@ public sealed class LinkHelper private static readonly Regex CategoryRegex = new Regex(@":category(\d*)", RegexOptions.Compiled); private static readonly Regex SlashesRegex = new Regex(@"/{1,}", RegexOptions.Compiled); - private static readonly string[] HtmlExtensions = new[] { ".markdown", ".mdown", ".mkdn", ".mkd", ".md", ".textile" }; + private static readonly string[] HtmlExtensions = new[] { ".markdown", ".mdown", ".mkdn", ".mkd", ".md", ".textile", ".cshtml" }; private static readonly Dictionary BuiltInPermalinks = new Dictionary { diff --git a/src/Pretzel.Tests/Pretzel.Tests.csproj b/src/Pretzel.Tests/Pretzel.Tests.csproj index b166ad48a..9788e61e3 100644 --- a/src/Pretzel.Tests/Pretzel.Tests.csproj +++ b/src/Pretzel.Tests/Pretzel.Tests.csproj @@ -118,6 +118,7 @@ + diff --git a/src/Pretzel.Tests/Templating/Context/LinkHelperTest.cs b/src/Pretzel.Tests/Templating/Context/LinkHelperTest.cs index d6cfc3765..0405b98a6 100644 --- a/src/Pretzel.Tests/Templating/Context/LinkHelperTest.cs +++ b/src/Pretzel.Tests/Templating/Context/LinkHelperTest.cs @@ -42,6 +42,7 @@ public void GetTitle_preserves_dash_separated_values_that_arent_timestamps() [InlineData(@"C:\TestSite\_site\about.mdown", "/about.html")] [InlineData(@"C:\TestSite\_site\about.markdown", "/about.html")] [InlineData(@"C:\TestSite\_site\about.textile", "/about.html")] + [InlineData(@"C:\TestSite\_site\about.cshtml", "/about.html")] [InlineData(@"C:\TestSite\_site\rss.xml", "/rss.xml")] [InlineData(@"C:\TestSite\_site\relativepath\about.md", "/relativepath/about.html")] [Theory] diff --git a/src/Pretzel.Tests/Templating/Razor/RazorEngineTests.cs b/src/Pretzel.Tests/Templating/Razor/RazorEngineTests.cs index 95ba2a383..eb260b059 100644 --- a/src/Pretzel.Tests/Templating/Razor/RazorEngineTests.cs +++ b/src/Pretzel.Tests/Templating/Razor/RazorEngineTests.cs @@ -265,6 +265,37 @@ public override void Render(DotLiquid.Context context, TextWriter result) } } + public class Given_Cshtml_Based_Page : BakingEnvironment + { + private const string TemplateContents = "@model Pretzel.Logic.Templating.Context.PageContext \r\n@Raw(Model.Content)"; + private const string IndexContents = "---\r\n layout: default \r\n paginate: 2 \r\n paginate_link: /blog/page:page/index.html \r\n---\r\n @model Pretzel.Logic.Templating.Context.PageContext \r\n@string.Format(\"{0}\",true)"; + private const string ExpectedFileContents = "True"; + + public override RazorSiteEngine Given() + { + return new RazorSiteEngine(); + } + + public override void When() + { + FileSystem.AddFile(@"C:\website\_layouts\default.cshtml", new MockFileData(TemplateContents)); + FileSystem.AddFile(@"C:\website\index.cshtml", new MockFileData(IndexContents)); + + var generator = new SiteContextGenerator(FileSystem, new LinkHelper(), new Configuration()); + var context = generator.BuildContext(@"C:\website\", @"C:\website\_site", false); + Subject.FileSystem = FileSystem; + Subject.Process(context); + } + + [Fact] + public void The_Output_Should_Have_Been_Transformed() + { + Assert.True(FileSystem.File.Exists(@"C:\website\_site\index.html")); + + Assert.Equal(ExpectedFileContents, FileSystem.File.ReadAllText(@"C:\website\_site\index.html").RemoveWhiteSpace()); + } + } + public class When_Paginate_Razor : BakingEnvironment { private const string TemplateContents = "@model Pretzel.Logic.Templating.Context.PageContext \r\n@Raw(Model.Content)"; diff --git a/src/Pretzel.Tests/Templating/Razor/RazorExtensionsTests.cs b/src/Pretzel.Tests/Templating/Razor/RazorExtensionsTests.cs new file mode 100644 index 000000000..f7d709f12 --- /dev/null +++ b/src/Pretzel.Tests/Templating/Razor/RazorExtensionsTests.cs @@ -0,0 +1,14 @@ +using Pretzel.Logic.Templating.Context; +using Xunit; + +namespace Pretzel.Tests.Templating.Razor +{ + public class RazorExtensionsTests + { + [Fact] + public void IsRazorFile_ForExpectedExtensions_ReturnsTrue() + { + Assert.True(".cshtml".IsRazorFile()); + } + } +}