import { describe, test, expect } from 'vitest'; import { Icon } from './Icon'; const toHtml = (Icon as any).toHtml; describe('Icon.toHtml normal rendering', () => { test('renders icon class, size/color style, and link href', () => { const { html } = toHtml({ icon: 'fa-star', size: '32px', color: '#3b82f6', link: 'https://example.com' }, ''); expect(html).toContain('class="fa fa-star"'); expect(html).toContain('font-size:32px'); expect(html).toContain('color:#3b82f6'); expect(html).toContain('href="https://example.com"'); }); }); describe('Icon.toHtml XSS hardening', () => { test('an icon name with an attribute-breakout string is escaped, not raw-concatenated', () => { const malicious = 'star">'; const { html } = toHtml({ icon: malicious as any }, ''); expect(html).not.toContain(''); expect(html).not.toMatch(/class="fa star">