Files
deerflow-code/frontend-web/src/core/auth/task-action-structure.test.ts

80 lines
2.2 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
actionNeedsNarrative,
parseNarrativeSummary,
parseTaskActionStructure,
taskActionStructureLines,
} from "./task-deeplink";
test("purpose 或 actor 为 null 时需要传播网简介", () => {
const missingPurpose = parseTaskActionStructure(
{
state: 200,
msg: "操作成功",
data: {
actionId: "9",
purpose: null,
actor: "媒体",
expectedBehavior: "转发",
drivingFactor: "认同",
narrationList: ["叙事01", "叙事02"],
},
},
"9",
);
assert.equal(missingPurpose?.purpose, null);
assert.equal(missingPurpose?.actor, "媒体");
assert.equal(actionNeedsNarrative(missingPurpose), true);
assert.equal(missingPurpose?.narration, "叙事01;叙事02");
const bothPresent = parseTaskActionStructure(
{
state: 200,
data: { purpose: "扩大影响", actor: "媒体", narrationList: [] },
},
"9",
);
assert.equal(actionNeedsNarrative(bothPresent), false);
});
test("目的和行为体等字段为 null 时不写入用户消息", () => {
const detail = parseTaskActionStructure(
{
state: 200,
data: {
actionId: "9",
purpose: null,
actor: null,
expectedBehavior: null,
drivingFactor: null,
narrationList: null,
},
},
"9",
);
assert.ok(detail);
detail.narrativeSummary = "这条传播网主要讨论暑期文旅。";
assert.deepEqual(taskActionStructureLines(detail), ["传播网简介:这条传播网主要讨论暑期文旅。"]);
});
test("传播网简介拼进用户消息,空简介不占行", () => {
const summary = parseNarrativeSummary({
state: "200",
msg: "操作成功",
data: { summary: "这条传播网主要讨论暑期文旅。" },
});
assert.equal(summary, "这条传播网主要讨论暑期文旅。");
const lines = taskActionStructureLines({
actionId: "9",
purpose: null,
actor: "媒体",
expectedBehavior: "",
drivingFactor: "",
narration: "",
narrativeSummary: summary,
});
assert.deepEqual(lines, ["行为体:媒体", "传播网简介:这条传播网主要讨论暑期文旅。"]);
});