full template restoreablity
Some checks failed
Publish npm package / publish (push) Failing after 21s
Some checks failed
Publish npm package / publish (push) Failing after 21s
This commit is contained in:
@@ -66,6 +66,17 @@ test("render can write a reverse map", () => {
|
||||
|
||||
const file = manifest.files.find((entry: any) => entry.outputPath === join("web", "if_example.html"))
|
||||
expect(file).toBeDefined()
|
||||
expect(file.tokens).toContainEqual({
|
||||
kind: "conditional",
|
||||
result: expect.stringContaining("<@var(context.header.text)>"),
|
||||
token: expect.stringContaining("<@if(context.header.render)>"),
|
||||
outputPath: join("web", "if_example.html"),
|
||||
templatePath: join("<@if(context.web)>web", "if_example.html"),
|
||||
range: expect.any(Object),
|
||||
activeRange: expect.any(Object),
|
||||
before: expect.any(String),
|
||||
after: expect.any(String),
|
||||
})
|
||||
expect(file.tokens).toContainEqual({
|
||||
kind: "content",
|
||||
result: "My Title",
|
||||
@@ -134,10 +145,37 @@ test("reverseDir rebuilds templates from rendered output and map", () => {
|
||||
expect(result.warnings).toEqual([])
|
||||
|
||||
const reversed = readFileSync(join(templateOut, "<@if(context.web)>web", "if_example.html"), "utf-8")
|
||||
expect(reversed).toContain("<@if(context.header.render)>")
|
||||
expect(reversed).toContain("<@endif>")
|
||||
expect(reversed).toContain("<@var(context.header.text)>")
|
||||
expect(reversed).toContain("Edited rendered output")
|
||||
})
|
||||
|
||||
test("reverseDir restores files skipped by path conditionals", () => {
|
||||
const createRenderer = initRenderer("./testdata/file_if")
|
||||
const render = createRenderer(z.object({
|
||||
web: z.boolean(),
|
||||
file: z.boolean(),
|
||||
text: z.string()
|
||||
}))
|
||||
const renderedOut = join(tmp, "rendered")
|
||||
const templateOut = join(tmp, "template")
|
||||
|
||||
render(renderedOut,{
|
||||
web: true,
|
||||
file: false,
|
||||
text: "test"
|
||||
}, { reverseMap: true })
|
||||
|
||||
expect(existsSync(join(renderedOut, "web", "example.txt"))).toBe(false)
|
||||
|
||||
const result = reverseDir(renderedOut, templateOut)
|
||||
expect(result.filesWritten).toBe(1)
|
||||
const restoredPath = join(templateOut, "<@if(context.web)>web", "<@if(context.file)>example.txt")
|
||||
expect(existsSync(restoredPath)).toBe(true)
|
||||
expect(readFileSync(restoredPath, "utf-8")).toContain("<@var(context.text)>")
|
||||
})
|
||||
|
||||
test("reverseDir supports custom map paths", () => {
|
||||
const createRenderer = initRenderer("./testdata/var_in_path")
|
||||
const render = createRenderer(z.object({
|
||||
|
||||
Reference in New Issue
Block a user