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
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -58,6 +58,18 @@ describe("桌面发行构建链", () => {
|
||||
expect(builderConfig).toContain('to: "samples"');
|
||||
});
|
||||
|
||||
it("将 DOCX Lua Filter 复制到桌面主进程资源目录", () => {
|
||||
const buildScript = readFileSync(
|
||||
`${desktopRoot}/scripts/build-main.mjs`,
|
||||
"utf8"
|
||||
);
|
||||
|
||||
expect(buildScript).toContain(
|
||||
"packages/docx-engine/assets/docx-media-filter.lua"
|
||||
);
|
||||
expect(buildScript).toContain("dist/docx-media-filter.lua");
|
||||
});
|
||||
|
||||
it("在 Docker Web 构建前复制样例并保留到运行镜像", () => {
|
||||
const dockerfile = readFileSync(
|
||||
`${projectRoot}/deploy/Dockerfile`,
|
||||
|
||||
Reference in New Issue
Block a user