import {VirtualDocument, textSizerFactory} from '../../spec/stubs/TestDOM.mjs'; import Exporter from './Exporter.mjs'; import Generator from './Generator.mjs'; import Parser from './Parser.mjs'; import Renderer from './Renderer.mjs'; import SequenceDiagram from './SequenceDiagram.mjs'; import {nodejs} from '../core/browser.mjs'; describe('SequenceDiagram', () => { function getSimplifiedContent(d) { return (d.dom().outerHTML .replace(/<\/g>/g, '') .replace(/<\/defs>/g, '') .replace(' xmlns="http://www.w3.org/2000/svg" version="1.1"', '') ); } let diagram = null; beforeEach(() => { diagram = new SequenceDiagram({ document: new VirtualDocument(), namespace: '', textSizerFactory, }); }); it('contains references to core objects', () => { expect(SequenceDiagram.Parser).toBe(Parser); expect(SequenceDiagram.Generator).toBe(Generator); expect(SequenceDiagram.Renderer).toBe(Renderer); expect(SequenceDiagram.Exporter).toBe(Exporter); }); it('provides default themes', () => { expect(SequenceDiagram.themes.length).toBeGreaterThan(1); }); it('renders empty diagrams without error', () => { diagram.set(''); expect(getSimplifiedContent(diagram)).toEqual( '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' ); }); it('renders simple metadata', () => { diagram.set('title My title here'); expect(getSimplifiedContent(diagram)).toEqual( '' + 'title My title here' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + 'My title here' + '' + '' ); }); it('renders simple components', () => { diagram.set('A -> B'); const content = getSimplifiedContent(diagram); expect(content).toContain( '' ); // Agent 1 expect(content).toContain( ' { diagram.set('if\nA -> B\nend'); diagram.setCollapsed(0, true); const content = getSimplifiedContent(diagram); expect(content).toContain(''); expect(content).toContain( '