80 lines
2.2 KiB
TypeScript
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, ["行为体:媒体", "传播网简介:这条传播网主要讨论暑期文旅。"]);
|
|
});
|