// test/employeeMasterCheck.test.js const { test } = require("node:test"); const assert = require("node:assert"); const { checkEmailConsistency, resolveKanaFromMaster, needsKanaFill, } = require("../src/lib/employeeMasterCheck"); test("checkEmailConsistency: PLメールアドレス(Class036)と一致すればconsistent:true", () => { const result = checkEmailConsistency("taro.yamada@next-hd.co.jp", { Class036: "taro.yamada@next-hd.co.jp", ClassB: "taro.yamada@example.com", }); assert.deepStrictEqual(result, { consistent: true, masterEmail: "taro.yamada@next-hd.co.jp" }); }); test("checkEmailConsistency: Class036が無ければClassBにフォールバックする", () => { const result = checkEmailConsistency("taro.yamada@example.com", { ClassB: "taro.yamada@example.com", }); assert.deepStrictEqual(result, { consistent: true, masterEmail: "taro.yamada@example.com" }); }); test("checkEmailConsistency: 不一致ならconsistent:false", () => { const result = checkEmailConsistency("taro.yamada@next-hd.co.jp", { Class036: "different@next-hd.co.jp", }); assert.deepStrictEqual(result, { consistent: false, masterEmail: "different@next-hd.co.jp" }); }); test("checkEmailConsistency: マスタ側にメールが無ければmasterEmail:null・consistent:false", () => { const result = checkEmailConsistency("taro.yamada@next-hd.co.jp", {}); assert.deepStrictEqual(result, { consistent: false, masterEmail: null }); }); test("resolveKanaFromMaster: 姓カナ+名カナを空白区切りで結合する", () => { assert.strictEqual( resolveKanaFromMaster({ Class003: "ヤマダ", Class004: "タロウ" }), "ヤマダ タロウ" ); }); test("resolveKanaFromMaster: 片方欠けていても結合できる", () => { assert.strictEqual(resolveKanaFromMaster({ Class003: "ヤマダ" }), "ヤマダ"); }); test("needsKanaFill: 空文字・未定義はtrue", () => { assert.strictEqual(needsKanaFill(""), true); assert.strictEqual(needsKanaFill(undefined), true); assert.strictEqual(needsKanaFill(null), true); }); test("needsKanaFill: 値が入っていればfalse", () => { assert.strictEqual(needsKanaFill("ヤマダ タロウ"), false); });