import { describe, expect, it } from "vitest";
import { renderInline } from "#lib/markup/inline.ts";
describe("renderInline", () => {
it("keeps the allowed marks", () => {
expect(renderInline("**b** *i* ~~s~~ `c`")).toBe(
"<strong>b</strong> <em>i</em> <s>s</s> <code>c</code>"
);
});
it("links labels and bare urls", () => {
expect(renderInline("[docs](https://tangled.org/docs) https://tangled.org")).toBe(
'<a href="https://tangled.org/docs" rel="nofollow ugc noopener noreferrer">docs</a> ' +
'<a href="https://tangled.org" rel="nofollow ugc noopener noreferrer">https://tangled.org</a>'
);
});
it("keeps the label text when links are off", () => {
expect(renderInline("[docs](https://tangled.org/docs)", false)).toBe("docs");
});
it("drops unsafe link schemes", () => {
expect(renderInline("[x](javascript:alert(1))")).not.toContain("<a");
});
it("escapes raw html and drops other tags", () => {
expect(renderInline("<b>x</b>")).toBe("<b>x</b>");
expect(renderInline("")).not.toContain("<img");
});
});