diff --git a/apps/server/src/share/content_renderer.spec.ts b/apps/server/src/share/content_renderer.spec.ts index 363b74390..137d85c97 100644 --- a/apps/server/src/share/content_renderer.spec.ts +++ b/apps/server/src/share/content_renderer.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; import { getContent, renderCode, renderText, type Result } from "./content_renderer.js"; import { trimIndentation } from "@triliumnext/commons"; -import { buildShareNote } from "../test/shaca_mocking.js"; +import { buildShareNote, buildShareNotes } from "../test/shaca_mocking.js"; describe("content_renderer", () => { it("Reports protected notes not being renderable", () => { @@ -28,6 +28,29 @@ describe("content_renderer", () => { const result = getContent(note); expect(result.content).toStrictEqual(content); }); + + it("renders included notes", () => { + buildShareNotes([ + { id: "subnote1", content: `

Foo

Bar
` }, + { id: "subnote2", content: `Baz` } + ]); + const note = buildShareNote({ + id: "note1", + content: trimIndentation`\ +

Before

+
 
+
 
+

After

+ ` + }); + const result = getContent(note); + expect(result.content).toStrictEqual(trimIndentation`\ +

Before

+

Foo

Bar
+ Baz +

After

+ `); + }); }); describe("renderCode", () => { diff --git a/apps/server/src/share/content_renderer.ts b/apps/server/src/share/content_renderer.ts index 253c43b39..237162200 100644 --- a/apps/server/src/share/content_renderer.ts +++ b/apps/server/src/share/content_renderer.ts @@ -80,7 +80,7 @@ export function renderText(result: Result, note: SNote) { if (typeof includedResult.content !== "string") continue; const includedDocument = new JSDOM(includedResult.content).window.document; - includeNoteEl.replaceWith(includedDocument.body); + includeNoteEl.replaceWith(...includedDocument.body.childNodes); } result.isEmpty = document.body.textContent?.trim().length === 0 && document.querySelectorAll("img").length === 0; diff --git a/apps/server/src/test/shaca_mocking.ts b/apps/server/src/test/shaca_mocking.ts index 022ee999a..af02394a0 100644 --- a/apps/server/src/test/shaca_mocking.ts +++ b/apps/server/src/test/shaca_mocking.ts @@ -10,6 +10,7 @@ interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { id?: string | undefined; title?: string; content?: string | Buffer; + children?: NoteDefinition[]; isProtected?: boolean; } @@ -59,6 +60,15 @@ export function buildShareNote(noteDef: NoteDefinition) { }; } + // Handle children. + if (noteDef.children) { + for (const childDef of noteDef.children) { + const childNote = buildShareNote(childDef); + + // TODO: Create corresponding SBranch. + } + } + // Handle labels & relations let position = 0; for (const [ key, value ] of Object.entries(noteDef)) {