@@ -6,22 +6,28 @@ public async Task Render_ReturnsRenderedString_WithLayoutAndPartial() {
66 var pageContent = """
77 <h1>{{title}}</h1>
88 <h2>{{description}}</h2>
9+ <h2>{{slug}}</h2>
10+ {{ if published }}
11+ <h3>{{ published | date.to_string '%Y-%m-%d' }}</h3>
12+ {{ end }}
913 <p>This is the content of the test page.</p>
1014 """ ;
1115
1216 var page = new Page (
1317 Path : "/test-page" ,
18+ Slug : "test-page" ,
1419 Url : "https://example.com/test-page" ,
1520 PageTitle : "Test Page" ,
1621 Title : $ "Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } ",
1722 Description : "This is a test page." ,
1823 Tags : [ ] ,
24+ Published : default ,
1925 Data : new Dictionary < string , object > ( ) ,
2026 View : new ( Path . GetRandomFileName ( ) , pageContent , ViewType . Html , "test-template" ) ) ;
2127
22- var result = await Shared . TestViewEngine . Render ( page , Shared . SupplementalData ) ;
28+ var result = await Shared . TestViewEngine . Render ( page , Shared . SiteConfig , [ ] ) ;
2329
24- var expected = $ """
30+ Shared . AssertHtmlEqual ( result , $ """
2531 <html>
2632 <head>
2733 <title>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </title>
@@ -32,16 +38,40 @@ public async Task Render_ReturnsRenderedString_WithLayoutAndPartial() {
3238 <main>
3339 <h1>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </h1>
3440 <h2>This is a test page.</h2>
41+ <h2>test-page</h2>
3542 <p>This is the content of the test page.</p>
3643 </main>
3744 <footer>
3845 <p>© { Shared . SiteConfig . Title } </p>
3946 </footer>
4047 </body>
4148 </html>
42- """ ;
49+ """ ) ;
50+
51+ page = page with { Published = new ( 2023 , 10 , 05 ) } ;
52+ result = await Shared . TestViewEngine . Render ( page , Shared . SiteConfig , [ ] ) ;
4353
44- Shared . AssertHtmlEqual ( expected , result ) ;
54+ Shared . AssertHtmlEqual ( result , $ """
55+ <html>
56+ <head>
57+ <title>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </title>
58+ <meta name="description" content="This is a test page.">
59+ </head>
60+ <body>
61+ <header>Test Template</header>
62+ <main>
63+ <h1>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </h1>
64+ <h2>This is a test page.</h2>
65+ <h2>test-page</h2>
66+ <h3>2023-10-05</h3>
67+ <p>This is the content of the test page.</p>
68+ </main>
69+ <footer>
70+ <p>© { Shared . SiteConfig . Title } </p>
71+ </footer>
72+ </body>
73+ </html>
74+ """ ) ;
4575 }
4676
4777 [ Fact ]
@@ -50,24 +80,31 @@ public async Task Render_ReturnsRenderedString_ForMarkdown() {
5080 var pageContent = """
5181 # Test Page{{site.title_separator}}{{site.title}}
5282
83+ ## {{ slug }}
84+
85+ {{ if published }}
86+ ## {{ published | date.to_string '%Y-%m-%d' }}
87+ {{ end }}
5388 This is a test page.
5489
5590 This is the content of the test page.
5691 """ ;
5792
5893 var page = new Page (
5994 Path : "/test-page" ,
95+ Slug : "test-page" ,
6096 Url : "https://example.com/test-page" ,
6197 PageTitle : "Test Page" ,
6298 Title : $ "Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } ",
6399 Description : "This is a test page." ,
64100 Tags : [ ] ,
101+ Published : default ,
65102 Data : new Dictionary < string , object > ( ) ,
66103 View : new ( Path . GetRandomFileName ( ) , pageContent , ViewType . Markdown , "test-template" ) ) ;
67104
68- var result = await Shared . TestViewEngine . Render ( page , Shared . SupplementalData ) ;
105+ var result = await Shared . TestViewEngine . Render ( page , Shared . SiteConfig , [ ] ) ;
69106
70- var expected = $ """
107+ Shared . AssertHtmlEqual ( result , $ """
71108 <html>
72109 <head>
73110 <title>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </title>
@@ -77,6 +114,7 @@ This is the content of the test page.
77114 <header>Test Template</header>
78115 <main>
79116 <h1>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </h1>
117+ <h2>test-page</h2>
80118 <p>This is a test page.</p>
81119 <p>This is the content of the test page.</p>
82120 </main>
@@ -85,9 +123,32 @@ This is the content of the test page.
85123 </footer>
86124 </body>
87125 </html>
88- """ ;
126+ """ ) ;
127+
128+ page = page with { Published = new ( 2023 , 10 , 5 ) } ;
129+ result = await Shared . TestViewEngine . Render ( page , Shared . SiteConfig , [ ] ) ;
89130
90- Shared . AssertHtmlEqual ( expected , result ) ;
131+ Shared . AssertHtmlEqual ( result , $ """
132+ <html>
133+ <head>
134+ <title>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </title>
135+ <meta name="description" content="This is a test page.">
136+ </head>
137+ <body>
138+ <header>Test Template</header>
139+ <main>
140+ <h1>Test Page{ Shared . SiteConfig . TitleSeparator } { Shared . SiteConfig . Title } </h1>
141+ <h2>test-page</h2>
142+ <h2>2023-10-05</h2>
143+ <p>This is a test page.</p>
144+ <p>This is the content of the test page.</p>
145+ </main>
146+ <footer>
147+ <p>© { Shared . SiteConfig . Title } </p>
148+ </footer>
149+ </body>
150+ </html>
151+ """ ) ;
91152 }
92153}
93154
@@ -98,7 +159,7 @@ public async Task Render_ReturnsRenderedString_ForValidViewAndModel() {
98159 var model = new { name = "World" } ;
99160 var renderer = new ViewRenderer ( ) ;
100161
101- var result = await renderer . Render ( view , model , default ) ;
162+ var result = await renderer . Render ( view , model ) ;
102163
103164 Assert . Equal ( "Hello, World!" , result ) ;
104165 }
@@ -109,7 +170,7 @@ public async Task Render_ReturnsView_WhenModelIsEmpty() {
109170 var model = new { } ;
110171 var renderer = new ViewRenderer ( ) ;
111172
112- var result = await renderer . Render ( view , model , default ) ;
173+ var result = await renderer . Render ( view , model ) ;
113174
114175 Assert . Equal ( "Hello, !" , result ) ;
115176 }
@@ -123,7 +184,7 @@ public async Task Render_ReturnsView_WithPartial_WhenPartialExists() {
123184 var model = new { name = "Alice" } ;
124185 var renderer = new ViewRenderer ( partials ) ;
125186
126- var result = await renderer . Render ( view , model , default ) ;
187+ var result = await renderer . Render ( view , model ) ;
127188 Assert . Equal ( "Hello, Alice!" , result ) ;
128189 }
129190
@@ -133,7 +194,7 @@ public async Task Render_DateOnly_ToDateTimeExtension_WorksInTemplate() {
133194 var model = new { testDate = new DateOnly ( 2024 , 6 , 15 ) } ;
134195 var renderer = new ViewRenderer ( ) ;
135196
136- var result = await renderer . Render ( view , model , default ) ;
197+ var result = await renderer . Render ( view , model ) ;
137198
138199 Assert . Equal ( "The date is 2024-06-15 00:00:00." , result ) ;
139200 }
@@ -171,6 +232,7 @@ public async Task LoadViews_ReturnsLayoutViews_WhenValidInput() {
171232 var views = await Shared . TestViewLoader . LoadViews ( Website . LayoutsDirectory ) ;
172233 Assert . NotNull ( views ) ;
173234 Assert . NotEmpty ( views . Names ) ;
235+ Assert . Equal ( 2 , views . Names . Count ) ;
174236 Assert . Contains ( "default" , views . Names ) ;
175237 Assert . Contains ( "test-template" , views . Names ) ;
176238 }
@@ -180,8 +242,11 @@ public async Task LoadViews_ReturnsPartialViews_WhenValidInput() {
180242 var views = await Shared . TestViewLoader . LoadViews ( Website . PartialsDirectory ) ;
181243 Assert . NotNull ( views ) ;
182244 Assert . NotEmpty ( views . Names ) ;
245+ Assert . Equal ( 4 , views . Names . Count ) ;
183246 Assert . Contains ( "header" , views . Names ) ;
184247 Assert . Contains ( "footer" , views . Names ) ;
248+ Assert . Contains ( "posts/title" , views . Names ) ;
249+ Assert . Contains ( "posts/hello-world/info-graphic" , views . Names ) ;
185250 }
186251}
187252
0 commit comments