import { describe, expect, test } from 'bun:test' import { renderSVGNode, svg } from '@open-pencil/core' // --- SVGNode builder tests --- describe('svg() and renderSVGNode()', () => { test('self-closing element', () => { const node = svg('rect', { width: 100, height: 50 }) expect(renderSVGNode(node)).toBe('') }) test('element with text child', () => { const node = svg('text', { x: 10 }, 'Hello') expect(renderSVGNode(node)).toBe('Hello') }) test('nested elements', () => { const node = svg('g', { id: 'group' }, svg('rect', { width: 10, height: 10 })) const result = renderSVGNode(node) expect(result).toContain('') expect(result).toContain(' ') expect(result).toContain('') }) test('filters null/undefined attrs', () => { const node = svg('rect', { width: 100, fill: undefined, stroke: null }) expect(renderSVGNode(node)).toBe('') }) test('filters null/undefined/false children', () => { const node = svg('g', {}, null, false, svg('rect', {}), undefined) const result = renderSVGNode(node) expect(result).toContain('') }) test('escapes attribute values', () => { const node = svg('text', { 'data-info': 'a"b { const node = svg('text', {}, '1 < 2 & 3 > 0') expect(renderSVGNode(node)).toBe('1 < 2 & 3 > 0') }) })