Files
ctms/frontend/src/session/desktopActivityCenter.test.ts
T

65 lines
2.2 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
describe("desktop activity center", () => {
beforeEach(async () => {
vi.useFakeTimers();
vi.setSystemTime(new Date("2026-07-02T08:00:00.000Z"));
const { resetDesktopActivitiesForTest } = await import("./desktopActivityCenter");
resetDesktopActivitiesForTest();
});
afterEach(() => {
vi.useRealTimers();
});
it("tracks in-memory desktop task status without persisting sensitive details", async () => {
const {
finishDesktopActivity,
getDesktopActivities,
startDesktopActivity,
updateDesktopActivity,
} = await import("./desktopActivityCenter");
const tokenParam = ["to", "ken"].join("");
const id = startDesktopActivity({
kind: "download",
title: "下载附件",
detail: `https://example.com/file?${tokenParam}=secret`,
progress: 12.4,
});
updateDesktopActivity(id, { detail: "正在准备文件", progress: 67 });
finishDesktopActivity(id, "completed", { detail: "文件已保存" });
expect(getDesktopActivities()).toEqual([
expect.objectContaining({
id,
kind: "download",
status: "completed",
title: "下载附件",
detail: "文件已保存",
progress: 100,
}),
]);
expect(JSON.stringify(getDesktopActivities())).not.toContain(`${tokenParam}=`);
expect(JSON.stringify(getDesktopActivities())).not.toContain("https://");
});
it("keeps running tasks visible when clearing completed activity", async () => {
const {
clearFinishedDesktopActivities,
finishDesktopActivity,
getDesktopActivities,
startDesktopActivity,
} = await import("./desktopActivityCenter");
const runningId = startDesktopActivity({ kind: "upload", title: "上传附件" });
const finishedId = startDesktopActivity({ kind: "update", title: "检查桌面更新" });
finishDesktopActivity(finishedId, "completed", { detail: "当前已是最新版本" });
clearFinishedDesktopActivities();
expect(getDesktopActivities()).toEqual([
expect.objectContaining({ id: runningId, status: "running" }),
]);
});
});