import MarkdownIt from "markdown-it"; import { describe, expect, it } from "vitest"; import { hint } from "../../src/node/markdown-it/hint.js"; describe("hint", () => { describe("with options", () => { const markdownIt = MarkdownIt({ linkify: true }).use(hint, { // eslint-disable-next-line @typescript-eslint/naming-convention "/": { info: "Info", note: "Note", tip: "Tips", warning: "Warning", caution: "Caution", details: "Details", }, }); it("should generate tip block", () => { expect(markdownIt.render("::: tip\n*content*\n:::\n")).toBe( '
\n

Tips

\n

content

\n
\n', ); expect(markdownIt.render("::: tip Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate warning block", () => { expect(markdownIt.render("::: warning\n*content*\n:::\n")).toBe( '
\n

Warning

\n

content

\n
\n', ); expect(markdownIt.render("::: warning Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate danger block", () => { expect(markdownIt.render("::: caution\n*content*\n:::\n")).toBe( '
\n

Caution

\n

content

\n
\n', ); expect(markdownIt.render("::: caution Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate info block", () => { expect(markdownIt.render("::: info\n*content*\n:::\n")).toBe( '
\n

Info

\n

content

\n
\n', ); expect(markdownIt.render("::: info Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate note block", () => { expect(markdownIt.render("::: note\n*content*\n:::\n")).toBe( '
\n

Note

\n

content

\n
\n', ); expect(markdownIt.render("::: note Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate details block", () => { expect(markdownIt.render("::: details\n*content*\n:::\n")).toBe( '
Details\n

content

\n
\n', ); }); }); describe("without options", () => { const markdownIt = MarkdownIt({ linkify: true }).use(hint); it("should generate tip block", () => { expect(markdownIt.render("::: tip\n*content*\n:::\n")).toBe( '
\n

tip

\n

content

\n
\n', ); expect(markdownIt.render("::: tip Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate warning block", () => { expect(markdownIt.render("::: warning\n*content*\n:::\n")).toBe( '
\n

warning

\n

content

\n
\n', ); expect(markdownIt.render("::: warning Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate caution block", () => { expect(markdownIt.render("::: caution\n*content*\n:::\n")).toBe( '
\n

caution

\n

content

\n
\n', ); expect(markdownIt.render("::: caution Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate info block", () => { expect(markdownIt.render("::: info\n*content*\n:::\n")).toBe( '
\n

info

\n

content

\n
\n', ); expect(markdownIt.render("::: info Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate note block", () => { expect(markdownIt.render("::: note\n*content*\n:::\n")).toBe( '
\n

note

\n

content

\n
\n', ); expect(markdownIt.render("::: note Title\n*content*\n:::\n")).toBe( '
\n

Title

\n

content

\n
\n', ); }); it("should generate details block without options", () => { expect(markdownIt.render("::: details\n*content*\n:::\n")).toBe( '
Details\n

content

\n
\n', ); }); }); });