From ef4f22841f87d3a0b1ac3e48f0d170c005edf3d2 Mon Sep 17 00:00:00 2001 From: Ibrahim Wassouf Date: Tue, 1 Aug 2023 07:54:32 -0300 Subject: [PATCH] Add unit tests for stange node names --- .../flowchart/parser/flow-singlenode.spec.js | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow-singlenode.spec.js b/packages/mermaid/src/diagrams/flowchart/parser/flow-singlenode.spec.js index 6b6e93857..e078af4cb 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow-singlenode.spec.js +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow-singlenode.spec.js @@ -299,11 +299,44 @@ describe('[Singlenodes] when parsing', () => { expect(vert[`a_${keyword}_node`].text).toBe(`a_${keyword}_node`); }); - it.each(keywords)('should handle nodes ending in keywords', function (keyword) { + it.each(keywords)('should handle nodes ending in %s', function (keyword) { const res = flow.parser.parse(`graph TD;node_${keyword};node.${keyword};node-${keyword};`); const vert = flow.parser.yy.getVertices(); expect(vert[`node_${keyword}`].text).toBe(`node_${keyword}`); expect(vert[`node.${keyword}`].text).toBe(`node.${keyword}`); expect(vert[`node-${keyword}`].text).toBe(`node-${keyword}`); }); + + const errorKeywords = [ + 'graph', + 'flowchart', + 'flowchart-elk', + 'style', + 'linkStyle', + 'interpolate', + 'classDef', + 'class', + '_self', + '_blank', + '_parent', + '_top', + 'end', + 'subgraph', + ]; + it.each(errorKeywords)('should throw error at nodes beginning with %s', function (keyword) { + const str = `graph TD;${keyword}.node;${keyword}-node;${keyword}/node`; + const vert = flow.parser.yy.getVertices(); + + expect(() => flow.parser.parse(str)).toThrowError(); + }); + + const workingKeywords = ['default', 'href', 'click', 'call']; + + it.each(workingKeywords)('should parse node beginning with %s', function (keyword) { + flow.parser.parse(`graph TD; ${keyword}.node;${keyword}-node;${keyword}/node;`); + const vert = flow.parser.yy.getVertices(); + expect(vert[`${keyword}.node`].text).toBe(`${keyword}.node`); + expect(vert[`${keyword}-node`].text).toBe(`${keyword}-node`); + expect(vert[`${keyword}/node`].text).toBe(`${keyword}/node`); + }); });