ken_nogi/ClaudePleasanter/営業積算システム/generate-process-flowchart.test.js
2026-08-01 10:42:16 +09:00

32 lines
1.4 KiB
JavaScript

const test = require("node:test");
const assert = require("node:assert/strict");
const path = require("path");
const os = require("os");
const fs = require("fs");
const { parseChoicesText, resolveSiteDir } = require("./generate-process-flowchart");
test("parseChoicesText: 値,ラベル,短縮ラベル,色 形式を 値→ラベル のMapへ変換する", () => {
const input = "100,新規,新規,new-status-white\n450,依頼者質疑中,質疑中,new-status-yellow";
const result = parseChoicesText(input);
assert.equal(result.get("100"), "新規");
assert.equal(result.get("450"), "依頼者質疑中");
assert.equal(result.size, 2);
});
test("parseChoicesText: undefinedやから文字列は空Mapを返す", () => {
assert.equal(parseChoicesText(undefined).size, 0);
assert.equal(parseChoicesText("").size, 0);
});
test("parseChoicesText: ラベル省略時は値をラベルとして使う", () => {
const result = parseChoicesText("999");
assert.equal(result.get("999"), "999");
});
test("resolveSiteDir: site-{id}_{name}形式のフォルダを前方一致で解決する", () => {
const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), "gpf-test-"));
fs.mkdirSync(path.join(tmpBase, "configs", "site-999_テストサイト"), { recursive: true });
const result = resolveSiteDir(tmpBase, "site-999");
assert.equal(result, path.join(tmpBase, "configs", "site-999_テストサイト"));
});