import { afterEach, describe, expect, it } from "vitest";
import type { FastifyInstance } from "fastify";
import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { buildApp } from "../src/app.js";
let app: FastifyInstance | undefined;
let temporaryDirectory: string | undefined;
afterEach(async () => {
await app?.close();
if (temporaryDirectory) {
await rm(temporaryDirectory, { recursive: true, force: true });
}
app = undefined;
temporaryDirectory = undefined;
});
describe("预览 API", () => {
it("渲染 Markdown 并返回安全文章结构", async () => {
app = buildApp();
const response = await app.inject({
method: "POST",
url: "/api/render",
payload: {
markdown: "# 文档\n\n"
}
});
expect(response.statusCode).toBe(200);
const result = response.json();
expect(result.articleHtml).toContain('id="write"');
expect(result.articleHtml).not.toContain("