mirror of
https://github.com/zadam/trilium.git
synced 2026-01-16 11:34:25 +01:00
100 lines
3.6 KiB
TypeScript
100 lines
3.6 KiB
TypeScript
import { trimIndentation } from "@triliumnext/commons";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { buildNote } from "../test/easy-froca";
|
|
import renderText from "./content_renderer_text";
|
|
|
|
describe("Text content renderer", () => {
|
|
it("renders included note", async () => {
|
|
const contentEl = document.createElement("div");
|
|
const includedNote = buildNote({
|
|
title: "Included note",
|
|
content: "<p>This is the included note.</p>"
|
|
});
|
|
const note = buildNote({
|
|
title: "New note",
|
|
content: trimIndentation`
|
|
<p>
|
|
Hi there
|
|
</p>
|
|
<section class="include-note" data-note-id="${includedNote.noteId}" data-box-size="medium">
|
|
|
|
</section>
|
|
`
|
|
});
|
|
await renderText(note, $(contentEl));
|
|
expect(contentEl.querySelectorAll("section.include-note").length).toBe(1);
|
|
expect(contentEl.querySelectorAll("section.include-note p").length).toBe(1);
|
|
});
|
|
|
|
it("skips rendering included note", async () => {
|
|
const contentEl = document.createElement("div");
|
|
const includedNote = buildNote({
|
|
title: "Included note",
|
|
content: "<p>This is the included note.</p>"
|
|
});
|
|
const note = buildNote({
|
|
title: "New note",
|
|
content: trimIndentation`
|
|
<p>
|
|
Hi there
|
|
</p>
|
|
<section class="include-note" data-note-id="${includedNote.noteId}" data-box-size="medium">
|
|
|
|
</section>
|
|
`
|
|
});
|
|
await renderText(note, $(contentEl), { noIncludedNotes: true });
|
|
expect(contentEl.querySelectorAll("section.include-note").length).toBe(0);
|
|
});
|
|
|
|
it("doesn't enter infinite loop on direct recursion", async () => {
|
|
const contentEl = document.createElement("div");
|
|
const note = buildNote({
|
|
title: "New note",
|
|
id: "Y7mBwmRjQyb4",
|
|
content: trimIndentation`
|
|
<p>
|
|
Hi there
|
|
</p>
|
|
<section class="include-note" data-note-id="Y7mBwmRjQyb4" data-box-size="medium">
|
|
|
|
</section>
|
|
<section class="include-note" data-note-id="Y7mBwmRjQyb4" data-box-size="medium">
|
|
|
|
</section>
|
|
`
|
|
});
|
|
await renderText(note, $(contentEl));
|
|
expect(contentEl.querySelectorAll("section.include-note").length).toBe(0);
|
|
});
|
|
|
|
it("doesn't enter infinite loop on indirect recursion", async () => {
|
|
const contentEl = document.createElement("div");
|
|
buildNote({
|
|
id: "first",
|
|
title: "Included note",
|
|
content: trimIndentation`\
|
|
<p>This is the included note.</p>
|
|
<section class="include-note" data-note-id="second" data-box-size="medium">
|
|
|
|
</section>
|
|
`
|
|
});
|
|
const note = buildNote({
|
|
id: "second",
|
|
title: "New note",
|
|
content: trimIndentation`
|
|
<p>
|
|
Hi there
|
|
</p>
|
|
<section class="include-note" data-note-id="first" data-box-size="medium">
|
|
|
|
</section>
|
|
`
|
|
});
|
|
await renderText(note, $(contentEl));
|
|
expect(contentEl.querySelectorAll("section.include-note").length).toBe(1);
|
|
});
|
|
});
|