collab/mermaid/packages/examples/src/example.spec.tsblame
View source
6dd74de1import mermaid from 'mermaid';
6dd74de2import { diagramData } from './index.js';
6dd74de3
6dd74de4describe('examples', () => {
6dd74de5 beforeAll(async () => {
6dd74de6 // To trigger the diagram registration
6dd74de7 await mermaid.registerExternalDiagrams([]);
6dd74de8 });
6dd74de9
6dd74de10 it('should have examples for each diagrams', () => {
6dd74de11 const skippedDiagrams = [
6dd74de12 // These diagrams have no examples
6dd74de13 'error',
6dd74de14 'info',
6dd74de15 '---',
6dd74de16 // These diagrams have v2 versions, with examples
6dd74de17 'class',
6dd74de18 'graph',
6dd74de19 'flowchart-elk',
6dd74de20 'flowchart',
6dd74de21 'state',
6dd74de22 ];
6dd74de23 const diagrams = mermaid
6dd74de24 .getRegisteredDiagramsMetadata()
6dd74de25 .filter((d) => !skippedDiagrams.includes(d.id));
6dd74de26 expect(diagrams.length).toBeGreaterThan(0);
6dd74de27 for (const diagram of diagrams) {
6dd74de28 const data = diagramData.find((d) => d.id === diagram.id)!;
6dd74de29 expect(data, `Example for ${diagram.id} is not defined`).toBeDefined();
6dd74de30 expect(data.examples.length).toBeGreaterThan(0);
6dd74de31 expect(data.examples.filter((e) => e.isDefault).length).toBe(1);
6dd74de32 }
6dd74de33 });
6dd74de34});