import { describe, expect, it } from "vitest"; import { csvField } from "@/utils/csv"; describe("csvField", () => { it("ครอบ double quote ตาม RFC 4180", () => { expect(csvField("ทดสอบ")).toBe('"ทดสอบ"'); }); it("escape double quote ในค่าเป็น \"\"", () => { expect(csvField('พูดว่า "สวัสดี"')).toBe('"พูดว่า ""สวัสดี"""'); }); it("ตัวเลขหน้าไม่ถูกนำหน้าอะไร", () => { expect(csvField("1")).toBe('"1"'); expect(csvField("12")).toBe('"12"'); }); it("FIX-6: ขึ้นต้นด้วย = + - @ ต้องนำหน้าด้วย ' กันสูตร Excel", () => { expect(csvField("=1+1")).toBe('"\'=1+1"'); expect(csvField("+SUM(A1:A2)")).toBe('"\'+SUM(A1:A2)"'); expect(csvField("-2+3")).toBe('"\'-2+3"'); expect(csvField("@SUM(A1)")).toBe('"\'@SUM(A1)"'); }); it("FIX-6: ขึ้นต้นด้วย TAB/CR ต้องนำหน้าด้วย ' เช่นกัน", () => { expect(csvField("\t=cmd")).toBe('"\'\t=cmd"'); expect(csvField("\r=cmd")).toBe('"\'\r=cmd"'); }); it("อักขระพิเศษที่ไม่ใช่จุดเริ่มสูตรไม่ถูกนำหน้า", () => { expect(csvField("1+1")).toBe('"1+1"'); expect(csvField("a=b")).toBe('"a=b"'); expect(csvField("ราคา -50 บาท")).toBe('"ราคา -50 บาท"'); }); });