/** * QR 编码文本构造工具 — 单元测试 */ import { describe, it, expect } from 'vitest'; import { buildWifiText, buildVCardText, buildEmailText, buildPhoneText, buildSmsText, buildEncodedText, } from '@/utils/qrText'; describe('buildWifiText', () => { it('构造 WPA WiFi 字符串', () => { const result = buildWifiText({ ssid: 'MyWiFi', encryption: 'WPA', password: 'pass123', }); expect(result).toBe('WIFI:T:WPA;S:MyWiFi;P:pass123;;'); }); it('空 SSID 返回空字符串', () => { const result = buildWifiText({ ssid: '' }); expect(result).toBe(''); }); it('隐藏网络标记正确', () => { const result = buildWifiText({ ssid: 'HiddenNet', encryption: 'WPA2', password: 'secret', hidden: 'true', }); expect(result).toBe('WIFI:T:WPA2;S:HiddenNet;P:secret;H:true;;'); }); it('默认加密方式为 WPA', () => { const result = buildWifiText({ ssid: 'Test' }); expect(result).toContain('T:WPA'); }); }); describe('buildVCardText', () => { it('构造完整 vCard', () => { const result = buildVCardText({ name: '张三', phone: '13800138000', email: 'zhangsan@example.com', company: '测试公司', address: '北京市', }); expect(result).toContain('BEGIN:VCARD'); expect(result).toContain('VERSION:3.0'); expect(result).toContain('FN:张三'); expect(result).toContain('TEL:13800138000'); expect(result).toContain('EMAIL:zhangsan@example.com'); expect(result).toContain('END:VCARD'); }); it('空字段产生空值', () => { const result = buildVCardText({}); expect(result).toBe('BEGIN:VCARD\nVERSION:3.0\nFN:\nTEL:\nEMAIL:\nORG:\nADR:\nEND:VCARD'); }); }); describe('buildEmailText', () => { it('构造 mailto 链接', () => { const result = buildEmailText({ to: 'test@example.com', subject: 'Hello', body: 'Test body', }); expect(result).toContain('mailto:test@example.com'); expect(result).toContain('subject='); expect(result).toContain('body='); }); }); describe('buildPhoneText', () => { it('构造电话链接', () => { expect(buildPhoneText({ number: '13800138000' })).toBe('tel:13800138000'); }); }); describe('buildSmsText', () => { it('构造短信链接', () => { const result = buildSmsText({ number: '13800138000', message: 'Hi' }); expect(result).toBe('smsto:13800138000:Hi'); }); }); describe('buildEncodedText', () => { it('url 模式返回 url 字段', () => { const result = buildEncodedText('url', { url: 'https://example.com' }); expect(result).toBe('https://example.com'); }); it('wifi 模式委托给 buildWifiText', () => { const result = buildEncodedText('wifi', { ssid: 'Test', encryption: 'WPA' }); expect(result).toContain('WIFI:T:WPA;S:Test'); }); it('未知模式返回 text 字段', () => { const result = buildEncodedText('unknown', { text: 'raw text' }); expect(result).toBe('raw text'); }); });