mirror of https://github.com/openclaw/openclaw.git
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
escapeNextcloudTalkMarkdown,
|
|
formatNextcloudTalkCodeBlock,
|
|
formatNextcloudTalkInlineCode,
|
|
formatNextcloudTalkMention,
|
|
markdownToNextcloudTalk,
|
|
stripNextcloudTalkFormatting,
|
|
truncateNextcloudTalkText,
|
|
} from "./format.js";
|
|
|
|
describe("nextcloud talk format helpers", () => {
|
|
it("keeps markdown mostly intact while trimming outer whitespace", () => {
|
|
expect(markdownToNextcloudTalk(" **hello** ")).toBe("**hello**");
|
|
});
|
|
|
|
it("escapes markdown-sensitive characters", () => {
|
|
expect(escapeNextcloudTalkMarkdown("*hello* [x](y)")).toBe("\\*hello\\* \\[x\\]\\(y\\)");
|
|
});
|
|
|
|
it("formats mentions and code consistently", () => {
|
|
expect(formatNextcloudTalkMention("@alice")).toBe("@alice");
|
|
expect(formatNextcloudTalkMention("bob")).toBe("@bob");
|
|
expect(formatNextcloudTalkCodeBlock("const x = 1;", "ts")).toBe("```ts\nconst x = 1;\n```");
|
|
expect(formatNextcloudTalkInlineCode("x")).toBe("`x`");
|
|
expect(formatNextcloudTalkInlineCode("x ` y")).toBe("`` x ` y ``");
|
|
});
|
|
|
|
it("strips markdown formatting and truncates on word boundaries", () => {
|
|
expect(stripNextcloudTalkFormatting("**bold** [link](https://example.com) `code`")).toBe(
|
|
"bold link",
|
|
);
|
|
expect(truncateNextcloudTalkText("alpha beta gamma delta", 14)).toBe("alpha beta...");
|
|
expect(truncateNextcloudTalkText("short", 14)).toBe("short");
|
|
});
|
|
});
|