Files
backnotprop__plannotator/packages/ui/components/diagramLanguages.test.ts
김영준E 33c7c0be00 feat: Add Graphviz diagram rendering in plan mode (#266)
* feat: add Graphviz rendering for plan mode

Support graphviz/dot/gv fenced blocks in the shared viewer and add a Graphviz sample diagram to PLAN_CONTENT for quick validation.

* fix: use imperative wheel listener with passive:false in GraphvizBlock
2026-03-11 07:40:26 -07:00

31 lines
1.2 KiB
TypeScript

import { describe, expect, test } from 'bun:test';
import { instance } from '@viz-js/viz';
import { isGraphvizLanguage, isMermaidLanguage } from './diagramLanguages';
describe('diagramLanguages', () => {
test('matches mermaid fences case-insensitively', () => {
expect(isMermaidLanguage('mermaid')).toBe(true);
expect(isMermaidLanguage('Mermaid')).toBe(true);
expect(isMermaidLanguage('mermaid align=center')).toBe(true);
expect(isMermaidLanguage('graphviz')).toBe(false);
});
test('matches supported graphviz aliases case-insensitively', () => {
expect(isGraphvizLanguage('graphviz')).toBe(true);
expect(isGraphvizLanguage('dot')).toBe(true);
expect(isGraphvizLanguage('GV')).toBe(true);
expect(isGraphvizLanguage('dot rankdir=LR')).toBe(true);
expect(isGraphvizLanguage('mermaid')).toBe(false);
expect(isGraphvizLanguage(undefined)).toBe(false);
});
test('renders a simple dot graph to svg', async () => {
const viz = await instance();
const svg = await viz.renderString('digraph { Plan -> Review }', { format: 'svg' });
expect(svg).toContain('<svg');
expect(svg).toContain('Plan');
expect(svg).toContain('Review');
});
});