import { describe, it, expect } from 'vitest'; import { renderSymbolGraphViewer, renderPianoRollViewer, renderGenericViewer, renderDomainViewer, } from './domain-viewers'; // Minimal HTMLElement shim — vitest runs in node, no real DOM/SVG needed // since these functions only ever set innerHTML to a plain string. function makeContainer(): HTMLElement { return { innerHTML: '', clientWidth: 600 } as unknown as HTMLElement; } describe('renderSymbolGraphViewer', () => { it('renders one labeled node per dimension', () => { const el = makeContainer(); renderSymbolGraphViewer(el, [{ name: 'file' }, { name: 'symbol' }]); expect(el.innerHTML).toContain(' { const el = makeContainer(); renderSymbolGraphViewer(el, []); expect(el.innerHTML).toContain('state'); }); it('escapes dimension names to prevent injection', () => { const el = makeContainer(); renderSymbolGraphViewer(el, [{ name: '' }]); expect(el.innerHTML).not.toContain('