#3061 Fixing unit tests

This commit is contained in:
Knut Sveidqvist
2022-09-26 08:47:41 +02:00
parent 98ddc95648
commit ebdec77c88
10 changed files with 1122 additions and 224 deletions

View File

@@ -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();
} }

View File

@@ -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": {

View File

@@ -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 () {

View File

@@ -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);

View File

@@ -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;

View File

@@ -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

View File

@@ -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,

View File

@@ -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();

View File

@@ -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

File diff suppressed because it is too large Load Diff