feat: 实现 Web 与 Desktop DOCX 导出交互
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
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
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user