/**
* 指示書AY §3 表6(`lib/ds-logs/file-name.ts` の `exportFileName(serial, now)`)。
* ブリーフ §5 と監督判断 第2ラウンドから本書で具体化。★P1・P2 の行は §11 Q14・Q15 の採用で確定★。
*
* | # | 入力 | 期待 |
* | N1 | DS-002・2026-10-19T12:34:56+09:00 | DS-002_logs_20261019-123456.zip |
* | N2 | 同じ瞬間を 2026-10-19T03:34:56Z で | 同上(JST) |
* | N3 | 2026-10-19T15:00:00Z | …_20261020-000000.zip(日付が変わる) |
* | N4 | シリアル `DS 002/"x"` | DS_002__x__logs_….zip(D23) |
*/
import { describe, expect, it } from "vitest";
import { exportFileName } from "@/lib/ds-logs/file-name";
describe("exportFileName() — 表6", () => {
it.each<[string, string, string, string]>([
["N1", "DS-002", "2026-10-19T12:34:56+09:00", "DS-002_logs_20261019-123456.zip"],
["N2 同じ瞬間を Z で(JST で名付ける)", "DS-002", "2026-10-19T03:34:56Z", "DS-002_logs_20261019-123456.zip"],
["N3 日付が変わる", "DS-002", "2026-10-19T15:00:00Z", "DS-002_logs_20261020-000000.zip"],
["N4 [A-Za-z0-9._-] 以外は _", 'DS 002/"x"', "2026-10-19T12:34:56+09:00", "DS_002__x__logs_20261019-123456.zip"],
])("%s", (_label, serial, nowIso, expected) => {
expect(exportFileName(serial, new Date(nowIso))).toBe(expected);
});
});