feat(desktop): 收口桌面工作台视觉与活动反馈
This commit is contained in:
@@ -6,6 +6,9 @@ const pickFilesMock = vi.hoisted(() => vi.fn());
|
||||
const saveFileMock = vi.hoisted(() => vi.fn());
|
||||
const messageInfoMock = vi.hoisted(() => vi.fn());
|
||||
const messageSuccessMock = vi.hoisted(() => vi.fn());
|
||||
const finishActivityMock = vi.hoisted(() => vi.fn());
|
||||
const startActivityMock = vi.hoisted(() => vi.fn());
|
||||
const updateActivityMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("../runtime", () => ({
|
||||
clientRuntime: {
|
||||
@@ -23,6 +26,12 @@ vi.mock("element-plus", () => ({
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock("../session/desktopActivityCenter", () => ({
|
||||
finishDesktopActivity: finishActivityMock,
|
||||
startDesktopActivity: startActivityMock,
|
||||
updateDesktopActivity: updateActivityMock,
|
||||
}));
|
||||
|
||||
const output = {
|
||||
suggestedName: "report.pdf",
|
||||
mimeType: "application/pdf",
|
||||
@@ -36,6 +45,7 @@ describe("file task feedback", () => {
|
||||
pickFilesMock.mockResolvedValue([]);
|
||||
saveFileMock.mockResolvedValue("saved");
|
||||
openFileMock.mockResolvedValue(undefined);
|
||||
startActivityMock.mockReturnValue("activity-1");
|
||||
});
|
||||
|
||||
it("reports native file picker selections", async () => {
|
||||
@@ -70,16 +80,26 @@ describe("file task feedback", () => {
|
||||
expect(messageSuccessMock).toHaveBeenCalledWith("文件下载已开始");
|
||||
});
|
||||
|
||||
it("uses saved feedback for native save flows", async () => {
|
||||
it("uses persistent desktop activity for native save flows", async () => {
|
||||
capabilitiesMock.mockReturnValue({ nativeFiles: true });
|
||||
const { saveFileWithFeedback } = await import("./fileTaskFeedback");
|
||||
|
||||
await expect(saveFileWithFeedback(output)).resolves.toBe("saved");
|
||||
|
||||
expect(messageSuccessMock).toHaveBeenCalledWith("文件已保存");
|
||||
expect(startActivityMock).toHaveBeenCalledWith({
|
||||
kind: "download",
|
||||
title: "保存文件",
|
||||
detail: "等待选择保存位置",
|
||||
});
|
||||
expect(updateActivityMock).toHaveBeenCalledWith("activity-1", {
|
||||
detail: "等待选择保存位置",
|
||||
progress: 70,
|
||||
});
|
||||
expect(finishActivityMock).toHaveBeenCalledWith("activity-1", "completed", { detail: "文件已保存" });
|
||||
expect(messageSuccessMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("reports cancelled save flows without treating them as downloads", async () => {
|
||||
it("reports cancelled web save flows without treating them as downloads", async () => {
|
||||
saveFileMock.mockResolvedValue("cancelled");
|
||||
const { saveFileWithFeedback } = await import("./fileTaskFeedback");
|
||||
|
||||
@@ -89,6 +109,17 @@ describe("file task feedback", () => {
|
||||
expect(messageSuccessMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("reports cancelled native save flows through desktop activity", async () => {
|
||||
capabilitiesMock.mockReturnValue({ nativeFiles: true });
|
||||
saveFileMock.mockResolvedValue("cancelled");
|
||||
const { saveFileWithFeedback } = await import("./fileTaskFeedback");
|
||||
|
||||
await expect(saveFileWithFeedback(output)).resolves.toBe("cancelled");
|
||||
|
||||
expect(finishActivityMock).toHaveBeenCalledWith("activity-1", "cancelled", { detail: "已取消保存" });
|
||||
expect(messageInfoMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("reports external open completion", async () => {
|
||||
const { openFileWithFeedback } = await import("./fileTaskFeedback");
|
||||
|
||||
@@ -97,4 +128,19 @@ describe("file task feedback", () => {
|
||||
expect(openFileMock).toHaveBeenCalledWith(output);
|
||||
expect(messageSuccessMock).toHaveBeenCalledWith("文件已打开");
|
||||
});
|
||||
|
||||
it("uses persistent desktop activity for native open flows", async () => {
|
||||
capabilitiesMock.mockReturnValue({ nativeFiles: true });
|
||||
const { openFileWithFeedback } = await import("./fileTaskFeedback");
|
||||
|
||||
await openFileWithFeedback(output);
|
||||
|
||||
expect(startActivityMock).toHaveBeenCalledWith({
|
||||
kind: "open",
|
||||
title: "打开文件",
|
||||
detail: "正在准备文件",
|
||||
});
|
||||
expect(finishActivityMock).toHaveBeenCalledWith("activity-1", "completed", { detail: "已交给系统打开" });
|
||||
expect(messageSuccessMock).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user