mirror of
https://github.com/C4illin/ConvertX.git
synced 2026-03-03 00:27:01 +00:00
99 lines
2.1 KiB
TypeScript
99 lines
2.1 KiB
TypeScript
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");
|
|
});
|
|
});
|