From ca8080a371acdda6d2d7bb38541437d37af2eafb Mon Sep 17 00:00:00 2001 From: Tim Maffett Date: Thu, 5 May 2022 11:50:11 -0700 Subject: [PATCH] add more test for mermaidAPI.parse() to ensure it matches documented behavior --- src/mermaidAPI.spec.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/mermaidAPI.spec.js b/src/mermaidAPI.spec.js index b6ffc6be6..f329eb107 100644 --- a/src/mermaidAPI.spec.js +++ b/src/mermaidAPI.spec.js @@ -1,3 +1,4 @@ +import mermaid from './mermaid'; import mermaidAPI from './mermaidAPI'; import { assignWithDepth } from './utils'; @@ -119,12 +120,28 @@ describe('when using mermaidAPI and ', function () { expect(mermaidAPI.getConfig().dompurifyConfig.ADD_ATTR).toEqual(['onclick']); }); }); - describe('checking validity of input ', function () { - it('it should throw for an invalid definiton', function () { + describe('test mermaidApi.parse() for checking validity of input ', function () { + mermaid.parseError = undefined; // ensure it parseError undefined + it('it should throw for an invalid definiton (with no mermaid.parseError() defined)', function () { + expect(mermaid.parseError).toEqual(undefined); expect(() => mermaidAPI.parse('this is not a mermaid diagram definition')).toThrow(); }); it('it should not throw for a valid definiton', function () { expect(() => mermaidAPI.parse('graph TD;A--x|text including URL space|B;')).not.toThrow(); }); + it('it should return false for invalid definiton WITH a parseError() callback defined', function () { + var parseErrorWasCalled = false; + // also test setParseErrorHandler() call working to set mermaid.parseError + mermaid.setParseErrorHandler(function (error, hash) { + // got here. + parseErrorWasCalled = true; + }); + expect(mermaid.parseError).not.toEqual(undefined); + expect(mermaidAPI.parse('this is not a mermaid diagram definition')).toEqual(false); + expect(parseErrorWasCalled).toEqual(true); + }); + it('it should return true for valid definiton', function () { + expect(mermaidAPI.parse('graph TD;A--x|text including URL space|B;')).toEqual(true); + }); }); });