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); + }); }); });