Files
ttstd-infinite-canvas/web/src/pages/create/creation-assets.test.ts
ahyang 78bf6a2c47 fix(media): 创作页任务回填与素材入库幂等 (#139)
* feat(media): 创作页 - 回填任务结果并同步素材库

* fix(media): 创作任务 - 回填与素材入库幂等
2026-08-05 09:15:49 +08:00

28 lines
1.3 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
// Node 原生 TypeScript 测试运行器要求保留扩展名,项目编译器不允许该写法。
// @ts-expect-error -- Node 原生 TypeScript 测试运行器需要保留扩展名。
import { creationAssetKey, isSameCreationAsset } from "./creation-assets.ts";
test("同一任务的同一结果只能匹配同一个素材", () => {
const identity = { taskId: "task-1", resultIndex: 0 };
const asset = { metadata: { creationAssetKey: creationAssetKey(identity) } };
assert.equal(isSameCreationAsset(asset, identity), true);
assert.equal(isSameCreationAsset(asset, { taskId: "task-1", resultIndex: 1 }), false);
});
test("不同任务的结果不能被误判为重复素材", () => {
const asset = { metadata: { creationAssetKey: creationAssetKey({ taskId: "task-1", resultIndex: 0 }) } };
assert.equal(isSameCreationAsset(asset, { taskId: "task-2", resultIndex: 0 }), false);
});
test("修复前只保存任务 ID 的素材首个结果仍可被识别", () => {
const asset = { metadata: { source: "create-generation", taskId: "task-legacy" } };
assert.equal(isSameCreationAsset(asset, { taskId: "task-legacy", resultIndex: 0 }), true);
assert.equal(isSameCreationAsset(asset, { taskId: "task-legacy", resultIndex: 1 }), false);
});