mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-21 08:19:43 +02:00
#3061 Fixing unit tests
This commit is contained in:
@@ -121,6 +121,7 @@ const main = async () => {
|
|||||||
|
|
||||||
if (watch) {
|
if (watch) {
|
||||||
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid' }));
|
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid' }));
|
||||||
|
build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-mindmap' }));
|
||||||
} else {
|
} else {
|
||||||
void main();
|
void main();
|
||||||
}
|
}
|
||||||
|
@@ -67,16 +67,19 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@braintree/sanitize-url": "^6.0.0",
|
"@braintree/sanitize-url": "^6.0.0",
|
||||||
|
"@types/node": "^18.7.21",
|
||||||
"d3": "^7.0.0",
|
"d3": "^7.0.0",
|
||||||
"dagre": "^0.8.5",
|
"dagre": "^0.8.5",
|
||||||
"dagre-d3": "^0.6.4",
|
"dagre-d3": "^0.6.4",
|
||||||
"dompurify": "2.4.0",
|
"dompurify": "2.4.0",
|
||||||
"fast-clone": "^1.5.13",
|
"fast-clone": "^1.5.13",
|
||||||
"graphlib": "^2.1.8",
|
"graphlib": "^2.1.8",
|
||||||
|
"jest": "^29.0.3",
|
||||||
"khroma": "^2.0.0",
|
"khroma": "^2.0.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"moment-mini": "^2.24.0",
|
"moment-mini": "^2.24.0",
|
||||||
"non-layered-tidy-tree-layout": "^2.0.2",
|
"non-layered-tidy-tree-layout": "^2.0.2",
|
||||||
|
"rollup": "^2.79.1",
|
||||||
"stylis": "^4.1.2"
|
"stylis": "^4.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@@ -1,6 +1,16 @@
|
|||||||
import { parser as mindmap } from './parser/mindmap';
|
import { parser as mindmap } from './parser/mindmap';
|
||||||
import * as mindmapDB from './mindmapDb';
|
import * as mindmapDB from './mindmapDb';
|
||||||
import { setLogLevel } from '../../diagram-api/diagramAPI';
|
import { injectUtils } from './mermaidUtils';
|
||||||
|
// Todo fix utils functions for tests
|
||||||
|
import {
|
||||||
|
log,
|
||||||
|
setLogLevel,
|
||||||
|
getConfig,
|
||||||
|
sanitizeText,
|
||||||
|
setupGraphViewBox,
|
||||||
|
} from '../../mermaid/src/diagram-api/diagramAPI';
|
||||||
|
|
||||||
|
injectUtils(log, setLogLevel, getConfig, sanitizeText, setupGraphViewBox);
|
||||||
|
|
||||||
describe('when parsing a mindmap ', function () {
|
describe('when parsing a mindmap ', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
|
@@ -15,12 +15,13 @@ export class Diagram {
|
|||||||
this.type = detectType(txt, cnf);
|
this.type = detectType(txt, cnf);
|
||||||
const diagram = getDiagram(this.type);
|
const diagram = getDiagram(this.type);
|
||||||
log.debug('Type ' + this.type);
|
log.debug('Type ' + this.type);
|
||||||
|
// console.log('Type ' + this.type);
|
||||||
// Setup diagram
|
// Setup diagram
|
||||||
this.db = diagram.db;
|
this.db = diagram.db;
|
||||||
this.db.clear?.();
|
this.db.clear?.();
|
||||||
this.renderer = diagram.renderer;
|
this.renderer = diagram.renderer;
|
||||||
this.parser = diagram.parser;
|
this.parser = diagram.parser;
|
||||||
console.log('Setting db to !', this.db);
|
// console.log('Setting db to !', this.db);
|
||||||
this.parser.parser.yy = this.db;
|
this.parser.parser.yy = this.db;
|
||||||
if (diagram.init) {
|
if (diagram.init) {
|
||||||
diagram.init(cnf);
|
diagram.init(cnf);
|
||||||
|
@@ -34,6 +34,8 @@ const detectors: Record<string, DiagramDetector> = {};
|
|||||||
export const detectType = function (text: string, config?: MermaidConfig): string {
|
export const detectType = function (text: string, config?: MermaidConfig): string {
|
||||||
text = text.replace(directive, '').replace(anyComment, '\n');
|
text = text.replace(directive, '').replace(anyComment, '\n');
|
||||||
|
|
||||||
|
// console.log(detectors);
|
||||||
|
|
||||||
for (const [key, detector] of Object.entries(detectors)) {
|
for (const [key, detector] of Object.entries(detectors)) {
|
||||||
if (detector(text, config)) {
|
if (detector(text, config)) {
|
||||||
return key;
|
return key;
|
||||||
|
@@ -1,4 +1,9 @@
|
|||||||
import { registerDiagram } from './diagramAPI';
|
import {
|
||||||
|
registerDiagram,
|
||||||
|
registerDetector,
|
||||||
|
DiagramDefinition,
|
||||||
|
DiagramDetector,
|
||||||
|
} from './diagramAPI';
|
||||||
|
|
||||||
// // @ts-ignore: TODO Fix ts errors
|
// // @ts-ignore: TODO Fix ts errors
|
||||||
// import mindmapParser from '../diagrams/mindmap/parser/mindmap';
|
// import mindmapParser from '../diagrams/mindmap/parser/mindmap';
|
||||||
@@ -101,8 +106,17 @@ import { setConfig } from '../config';
|
|||||||
import errorRenderer from '../diagrams/error/errorRenderer';
|
import errorRenderer from '../diagrams/error/errorRenderer';
|
||||||
import errorStyles from '../diagrams/error/styles';
|
import errorStyles from '../diagrams/error/styles';
|
||||||
|
|
||||||
|
const registerDiagramAndDetector = (
|
||||||
|
id: string,
|
||||||
|
diagram: DiagramDefinition,
|
||||||
|
detector: DiagramDetector
|
||||||
|
) => {
|
||||||
|
registerDiagram(id, diagram);
|
||||||
|
registerDetector(id, detector);
|
||||||
|
};
|
||||||
|
|
||||||
export const addDiagrams = () => {
|
export const addDiagrams = () => {
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'error',
|
'error',
|
||||||
// Special diagram with error messages but setup as a regular diagram
|
// Special diagram with error messages but setup as a regular diagram
|
||||||
{
|
{
|
||||||
@@ -122,10 +136,11 @@ export const addDiagrams = () => {
|
|||||||
init: () => {
|
init: () => {
|
||||||
// no op
|
// no op
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
(text) => text.toLowerCase().trim() === 'error'
|
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDetector('error', (text) => text.toLowerCase().trim() === 'error');
|
||||||
|
|
||||||
|
registerDiagramAndDetector(
|
||||||
'c4',
|
'c4',
|
||||||
{
|
{
|
||||||
parser: c4Parser,
|
parser: c4Parser,
|
||||||
@@ -138,7 +153,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
c4Detector
|
c4Detector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'class',
|
'class',
|
||||||
{
|
{
|
||||||
parser: classParser,
|
parser: classParser,
|
||||||
@@ -155,7 +170,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
classDetector
|
classDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'classDiagram',
|
'classDiagram',
|
||||||
{
|
{
|
||||||
parser: classParser,
|
parser: classParser,
|
||||||
@@ -172,7 +187,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
classDetectorV2
|
classDetectorV2
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'er',
|
'er',
|
||||||
{
|
{
|
||||||
parser: erParser,
|
parser: erParser,
|
||||||
@@ -182,7 +197,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
erDetector
|
erDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'gantt',
|
'gantt',
|
||||||
{
|
{
|
||||||
parser: ganttParser,
|
parser: ganttParser,
|
||||||
@@ -192,7 +207,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
ganttDetector
|
ganttDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'info',
|
'info',
|
||||||
{
|
{
|
||||||
parser: infoParser,
|
parser: infoParser,
|
||||||
@@ -202,7 +217,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
infoDetector
|
infoDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'pie',
|
'pie',
|
||||||
{
|
{
|
||||||
parser: pieParser,
|
parser: pieParser,
|
||||||
@@ -212,7 +227,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
pieDetector
|
pieDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'requirement',
|
'requirement',
|
||||||
{
|
{
|
||||||
parser: requirementParser,
|
parser: requirementParser,
|
||||||
@@ -222,7 +237,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
requirementDetector
|
requirementDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'sequence',
|
'sequence',
|
||||||
{
|
{
|
||||||
parser: sequenceParser,
|
parser: sequenceParser,
|
||||||
@@ -245,7 +260,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
sequenceDetector
|
sequenceDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'state',
|
'state',
|
||||||
{
|
{
|
||||||
parser: stateParser,
|
parser: stateParser,
|
||||||
@@ -262,7 +277,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
stateDetector
|
stateDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'stateDiagram',
|
'stateDiagram',
|
||||||
{
|
{
|
||||||
parser: stateParser,
|
parser: stateParser,
|
||||||
@@ -279,7 +294,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
stateDetectorV2
|
stateDetectorV2
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'journey',
|
'journey',
|
||||||
{
|
{
|
||||||
parser: journeyParser,
|
parser: journeyParser,
|
||||||
@@ -294,7 +309,7 @@ export const addDiagrams = () => {
|
|||||||
journeyDetector
|
journeyDetector
|
||||||
);
|
);
|
||||||
|
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'flowchart',
|
'flowchart',
|
||||||
{
|
{
|
||||||
parser: flowParser,
|
parser: flowParser,
|
||||||
@@ -314,7 +329,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
flowDetector
|
flowDetector
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'flowchart-v2',
|
'flowchart-v2',
|
||||||
{
|
{
|
||||||
parser: flowParser,
|
parser: flowParser,
|
||||||
@@ -335,7 +350,7 @@ export const addDiagrams = () => {
|
|||||||
},
|
},
|
||||||
flowDetectorV2
|
flowDetectorV2
|
||||||
);
|
);
|
||||||
registerDiagram(
|
registerDiagramAndDetector(
|
||||||
'gitGraph',
|
'gitGraph',
|
||||||
{ parser: gitGraphParser, db: gitGraphDb, renderer: gitGraphRenderer, styles: gitGraphStyles },
|
{ parser: gitGraphParser, db: gitGraphDb, renderer: gitGraphRenderer, styles: gitGraphStyles },
|
||||||
gitGraphDetector
|
gitGraphDetector
|
||||||
|
@@ -39,7 +39,7 @@ export const registerDetector = (id: string, detector: DiagramDetector) => {
|
|||||||
export const registerDiagram = (
|
export const registerDiagram = (
|
||||||
id: string,
|
id: string,
|
||||||
diagram: DiagramDefinition,
|
diagram: DiagramDefinition,
|
||||||
callback: (
|
callback?: (
|
||||||
_log: any,
|
_log: any,
|
||||||
_setLogLevel: any,
|
_setLogLevel: any,
|
||||||
_getConfig: any,
|
_getConfig: any,
|
||||||
|
@@ -1827,7 +1827,7 @@ sequenceDiagram
|
|||||||
participant Alice
|
participant Alice
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// diagram.parse(str);
|
diagram.parse(str);
|
||||||
diagram.renderer.draw(str, 'tst', '1.2.3', diagram);
|
diagram.renderer.draw(str, 'tst', '1.2.3', diagram);
|
||||||
|
|
||||||
const { bounds, models } = diagram.renderer.bounds.getBounds();
|
const { bounds, models } = diagram.renderer.bounds.getBounds();
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import mermaid from './mermaid';
|
import mermaid from './mermaid';
|
||||||
import { mermaidAPI } from './mermaidAPI';
|
import { mermaidAPI } from './mermaidAPI';
|
||||||
|
import './diagram-api/diagram-orchestration';
|
||||||
import { vi, describe, it, beforeEach, afterEach, expect } from 'vitest';
|
import { vi, describe, it, beforeEach, afterEach, expect } from 'vitest';
|
||||||
const spyOn = vi.spyOn;
|
const spyOn = vi.spyOn;
|
||||||
|
|
||||||
@@ -67,7 +68,7 @@ describe('when using mermaid and ', function () {
|
|||||||
expect(() => mermaid.parse('graph TQ;A--x|text including URL space|B;')).toThrow();
|
expect(() => mermaid.parse('graph TQ;A--x|text including URL space|B;')).toThrow();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not throw for a valid sequenceDiagram definition', function () {
|
it('should not throw for a valid sequenceDiagram definition (mmds1)', function () {
|
||||||
const text =
|
const text =
|
||||||
'sequenceDiagram\n' +
|
'sequenceDiagram\n' +
|
||||||
'Alice->Bob: Hello Bob, how are you?\n\n' +
|
'Alice->Bob: Hello Bob, how are you?\n\n' +
|
||||||
|
1265
pnpm-lock.yaml
generated
1265
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user