import { expect, test, describe } from "bun:test"; import { convert, parseVCF, toCSV } from "../../src/converters/vcf"; describe("parseVCF", () => { test("should parse a simple VCF card", () => { const vcfData = `BEGIN:VCARD VERSION:3.0 FN:John Doe N:Doe;John;;; TEL:+123456789 EMAIL:john@example.com ORG:Example Corp END:VCARD`; const result = parseVCF(vcfData); expect(result).toEqual([ { "Full Name": "John Doe", "Last Name": "Doe", "First Name": "John", Phone: "+123456789", Email: "john@example.com", Organization: "Example Corp", }, ]); }); test("should handle multiple cards", () => { const vcfData = `BEGIN:VCARD FN:John Doe END:VCARD BEGIN:VCARD FN:Jane Smith END:VCARD`; const result = parseVCF(vcfData); expect(result).toEqual([{ "Full Name": "John Doe" }, { "Full Name": "Jane Smith" }]); }); test("should parse VCF with TYPE parameters", () => { const vcfData = `BEGIN:VCARD VERSION:3.0 FN:John Doe N:Doe;John;;; TEL;TYPE=WORK,VOICE:(111) 555-1212 EMAIL;TYPE=PREF,INTERNET:john.doe@example.com END:VCARD`; const result = parseVCF(vcfData); expect(result).toEqual([ { "Full Name": "John Doe", "Last Name": "Doe", "First Name": "John", Phone: "(111) 555-1212", Email: "john.doe@example.com", }, ]); }); }); describe("toCSV", () => { test("should convert contacts to CSV", () => { const contacts = [ { "Full Name": "John Doe", Phone: "+123", Email: "john@example.com", }, ]; const result = toCSV(contacts); expect(result).toBe('Full Name,Phone,Email\n"John Doe","+123","john@example.com"'); }); test("should escape quotes", () => { const contacts = [{ "Full Name": 'John "Johnny" Doe' }]; const result = toCSV(contacts); expect(result).toBe('Full Name\n"John ""Johnny"" Doe"'); }); test("should handle empty data", () => { const result = toCSV([]); expect(result).toBe(""); }); }); describe("convert", () => { test("should be a function", () => { expect(typeof convert).toBe("function"); }); });