| 1 | import mermaid from 'mermaid'; |
| 2 | import { diagramData } from './index.js'; |
| 3 | |
| 4 | describe('examples', () => { |
| 5 | beforeAll(async () => { |
| 6 | // To trigger the diagram registration |
| 7 | await mermaid.registerExternalDiagrams([]); |
| 8 | }); |
| 9 | |
| 10 | it('should have examples for each diagrams', () => { |
| 11 | const skippedDiagrams = [ |
| 12 | // These diagrams have no examples |
| 13 | 'error', |
| 14 | 'info', |
| 15 | '---', |
| 16 | // These diagrams have v2 versions, with examples |
| 17 | 'class', |
| 18 | 'graph', |
| 19 | 'flowchart-elk', |
| 20 | 'flowchart', |
| 21 | 'state', |
| 22 | ]; |
| 23 | const diagrams = mermaid |
| 24 | .getRegisteredDiagramsMetadata() |
| 25 | .filter((d) => !skippedDiagrams.includes(d.id)); |
| 26 | expect(diagrams.length).toBeGreaterThan(0); |
| 27 | for (const diagram of diagrams) { |
| 28 | const data = diagramData.find((d) => d.id === diagram.id)!; |
| 29 | expect(data, `Example for ${diagram.id} is not defined`).toBeDefined(); |
| 30 | expect(data.examples.length).toBeGreaterThan(0); |
| 31 | expect(data.examples.filter((e) => e.isDefault).length).toBe(1); |
| 32 | } |
| 33 | }); |
| 34 | }); |
| 35 | |