Files
dingMCP/test/approval-metadata.test.ts
gitea-admin 504145aec6
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
feat: initial public release
2026-08-17 03:04:09 +00:00

52 lines
1.9 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { extractApprovalListMetadata } from "../src/approval-metadata.js";
test("approval metadata normalizes official instance identity, time, amount, and summary", () => {
const metadata = extractApprovalListMetadata({
originatorUserName: "测试用户丁",
originatorUserId: "user-bin",
originatorDeptName: "销售部",
createTime: 1_786_179_600_000,
formComponentValues: [
{ name: "报销金额", value: "¥4,812.00" },
{ name: "报销事由", value: "客户现场出差" },
{ name: "银行卡号", value: "6222000012345678" },
],
});
assert.deepEqual(metadata, {
applicantName: "测试用户丁",
applicantUserId: "user-bin",
applicantDepartment: "销售部",
submittedAt: new Date(1_786_179_600_000).toISOString(),
amount: 4812,
currency: "CNY",
summary: "客户现场出差",
});
assert.doesNotMatch(JSON.stringify(metadata), /6222000012345678/);
});
test("approval metadata falls back to todo form summaries and chooses total amount", () => {
const metadata = extractApprovalListMetadata({
forms: [
{ title: "发起人", content: "测试用户戊" },
{ title: "部门", content: "产品部" },
{ title: "单项费用", content: "100" },
{ title: "合计金额", content: "USD 1,234.50" },
{ title: "申请原因", content: "采购测试设备" },
],
});
assert.equal(metadata.applicantName, "测试用户戊");
assert.equal(metadata.applicantDepartment, "产品部");
assert.equal(metadata.amount, 1234.5);
assert.equal(metadata.currency, "USD");
assert.equal(metadata.summary, "采购测试设备");
});
test("approval metadata can derive the applicant from a standard DingTalk title", () => {
assert.equal(
extractApprovalListMetadata({ title: "测试用户甲提交的通用费用报销_北极大" }).applicantName,
"测试用户甲",
);
});