74 lines
1.7 KiB
TypeScript
74 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
ApplicationRequestError,
|
|
DocxExportServiceError
|
|
} from "@md-to-pdf/application";
|
|
import { toDesktopDocxExportFailure } from "../src/docx-contract.js";
|
|
|
|
describe("Desktop DOCX IPC 契约", () => {
|
|
it("映射应用请求错误", () => {
|
|
expect(
|
|
toDesktopDocxExportFailure(
|
|
new ApplicationRequestError(
|
|
400,
|
|
"INVALID_EXPORT_CONFIG",
|
|
"导出配置无效"
|
|
)
|
|
)
|
|
).toEqual({
|
|
ok: false,
|
|
error: "INVALID_EXPORT_CONFIG",
|
|
message: "导出配置无效",
|
|
retryable: false
|
|
});
|
|
});
|
|
|
|
it("保留共享服务的重试语义", () => {
|
|
expect(
|
|
toDesktopDocxExportFailure(
|
|
new DocxExportServiceError(
|
|
429,
|
|
"DOCX_QUEUE_FULL",
|
|
"DOCX 生成队列已满",
|
|
true
|
|
)
|
|
)
|
|
).toEqual({
|
|
ok: false,
|
|
error: "DOCX_QUEUE_FULL",
|
|
message: "DOCX 生成队列已满",
|
|
retryable: true
|
|
});
|
|
});
|
|
|
|
it("保留 Front Matter 解析错误", () => {
|
|
expect(
|
|
toDesktopDocxExportFailure(
|
|
new ApplicationRequestError(
|
|
400,
|
|
"INVALID_FRONT_MATTER",
|
|
"无法解析 Markdown Front Matter"
|
|
)
|
|
)
|
|
).toEqual({
|
|
ok: false,
|
|
error: "INVALID_FRONT_MATTER",
|
|
message: "无法解析 Markdown Front Matter",
|
|
retryable: false
|
|
});
|
|
});
|
|
|
|
it("隐藏未知主进程错误细节", () => {
|
|
expect(
|
|
toDesktopDocxExportFailure(
|
|
new Error("C:\\secret\\pandoc.exe 启动失败")
|
|
)
|
|
).toEqual({
|
|
ok: false,
|
|
error: "DOCX_GENERATION_FAILED",
|
|
message: "DOCX 导出失败",
|
|
retryable: false
|
|
});
|
|
});
|
|
});
|