@@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest";
44import { Eta } from "../src/index" ;
55
66interface SimpleEtaTemplate {
7+ greeting ?: string ;
78 name : string ;
89}
910
@@ -171,3 +172,83 @@ describe("file rendering", () => {
171172HI FROM ASYNC` ) ;
172173 } ) ;
173174} ) ;
175+
176+ describe ( "import values merging" , ( ) => {
177+ const eta = new Eta ( { views : path . join ( __dirname , "templates" ) } ) ;
178+ eta . loadTemplate ( "@simple" , "<%= it.greeting ?? 'Hi' %> <%= it.name %>" ) ;
179+ eta . loadTemplate ( "@partial" , "This is a partial.\n<%~ include('@simple', {name: 'Test Runner'}) %>\n" ) ;
180+ eta . loadTemplate ( "@partial-merge" , "This is a partial.\n<%~ include('@simple', {greeting: 'Hello'}) %>\n" ) ;
181+ eta . loadTemplate ( "@partial-pass-data" , "This is a partial.\n<%~ include('@simple') %>" ) ;
182+
183+ it ( "can override value" , ( ) => {
184+ const res = eta . render < SimpleEtaTemplate > ( "@partial" , { greeting : "Hello" , name : "friend" } ) ;
185+
186+ expect ( res ) . toEqual ( "This is a partial.\nHello Test Runner" ) ;
187+ } ) ;
188+
189+ it ( "merges values" , ( ) => {
190+ const res = eta . render < SimpleEtaTemplate > ( "@partial-merge" , { name : "friend" } ) ;
191+
192+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
193+ } ) ;
194+
195+ it ( "passes original values" , ( ) => {
196+ const res = eta . render < SimpleEtaTemplate > ( "@partial-pass-data" , { greeting : "Hello" , name : "friend" } ) ;
197+
198+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
199+ } ) ;
200+ } ) ;
201+
202+ describe ( "import values merging with varName data" , ( ) => {
203+ const eta = new Eta ( { varName : "data" , views : path . join ( __dirname , "templates" ) } ) ;
204+
205+ eta . loadTemplate ( "@simple" , "<%= data.greeting ?? 'Hi' %> <%= data.name %>" ) ;
206+ eta . loadTemplate ( "@partial" , "This is a partial.\n<%~ include('@simple', {name: 'Test Runner'}) %>\n" ) ;
207+ eta . loadTemplate ( "@partial-merge" , "This is a partial.\n<%~ include('@simple', {greeting: 'Hello'}) %>\n" ) ;
208+ eta . loadTemplate ( "@partial-pass-data" , "This is a partial.\n<%~ include('@simple') %>" ) ;
209+
210+ it ( "can override value" , ( ) => {
211+ const res = eta . render < SimpleEtaTemplate > ( "@partial" , { greeting : "Hello" , name : "friend" } ) ;
212+
213+ expect ( res ) . toEqual ( "This is a partial.\nHello Test Runner" ) ;
214+ } ) ;
215+
216+ it ( "merges values" , ( ) => {
217+ const res = eta . render < SimpleEtaTemplate > ( "@partial-merge" , { name : "friend" } ) ;
218+
219+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
220+ } ) ;
221+
222+ it ( "passes original values" , ( ) => {
223+ const res = eta . render < SimpleEtaTemplate > ( "@partial-pass-data" , { greeting : "Hello" , name : "friend" } ) ;
224+
225+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
226+ } ) ;
227+ } ) ;
228+
229+ describe ( "import values merging with the useWith" , ( ) => {
230+ const eta = new Eta ( { useWith : true , views : path . join ( __dirname , "templates" ) } ) ;
231+
232+ eta . loadTemplate ( "@simple" , "<%= typeof greeting !== 'undefined' ? greeting : 'Hi' %> <%= name %>" ) ;
233+ eta . loadTemplate ( "@partial" , "This is a partial.\n<%~ include('@simple', {name: 'Test Runner'}) %>\n" ) ;
234+ eta . loadTemplate ( "@partial-merge" , "This is a partial.\n<%~ include('@simple', {greeting: 'Hello'}) %>\n" ) ;
235+ eta . loadTemplate ( "@partial-pass-data" , "This is a partial.\n<%~ include('@simple') %>" ) ;
236+
237+ it ( "can override value" , ( ) => {
238+ const res = eta . render < SimpleEtaTemplate > ( "@partial" , { greeting : "Hello" , name : "friend" } ) ;
239+
240+ expect ( res ) . toEqual ( "This is a partial.\nHello Test Runner" ) ;
241+ } ) ;
242+
243+ it ( "merges values" , ( ) => {
244+ const res = eta . render < SimpleEtaTemplate > ( "@partial-merge" , { name : "friend" } ) ;
245+
246+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
247+ } ) ;
248+
249+ it ( "passes original values" , ( ) => {
250+ const res = eta . render < SimpleEtaTemplate > ( "@partial-pass-data" , { greeting : "Hello" , name : "friend" } ) ;
251+
252+ expect ( res ) . toEqual ( "This is a partial.\nHello friend" ) ;
253+ } ) ;
254+ } ) ;
0 commit comments