diff --git a/src/Diagram.js b/src/Diagram.js index a87ed42fb..16dfb89d3 100644 --- a/src/Diagram.js +++ b/src/Diagram.js @@ -18,6 +18,8 @@ class Diagram { // console.log('this.type', this.type, diagrams[this.type]); // Setup diagram this.db = diagrams[this.type].db; + this.db.clear?.(); + this.renderer = diagrams[this.type].renderer; this.parser = diagrams[this.type].parser; this.parser.parser.yy = this.db; diff --git a/src/diagrams/sequence/sequenceDiagram.spec.js b/src/diagrams/sequence/sequenceDiagram.spec.js index 5f09e0e2d..0ee00135d 100644 --- a/src/diagrams/sequence/sequenceDiagram.spec.js +++ b/src/diagrams/sequence/sequenceDiagram.spec.js @@ -22,6 +22,81 @@ function addConf(conf, key, value) { // const parser = sequence.parser; let diagram; +describe('more than one sequence diagram', () => { + it('should not have duplicated messages', () => { + const diagram1 = new Diagram(` + sequenceDiagram + Alice->Bob:Hello Bob, how are you? + Bob-->Alice: I am good thanks!`); + expect(diagram1.db.getMessages()).toMatchInlineSnapshot(` + Array [ + Object { + "from": "Alice", + "message": "Hello Bob, how are you?", + "to": "Bob", + "type": 5, + "wrap": false, + }, + Object { + "from": "Bob", + "message": "I am good thanks!", + "to": "Alice", + "type": 6, + "wrap": false, + }, + ] + `); + const diagram2 = new Diagram(` + sequenceDiagram + Alice->Bob:Hello Bob, how are you? + Bob-->Alice: I am good thanks!`); + + expect(diagram2.db.getMessages()).toMatchInlineSnapshot(` + Array [ + Object { + "from": "Alice", + "message": "Hello Bob, how are you?", + "to": "Bob", + "type": 5, + "wrap": false, + }, + Object { + "from": "Bob", + "message": "I am good thanks!", + "to": "Alice", + "type": 6, + "wrap": false, + }, + ] + `); + + // Add John actor + const diagram3 = new Diagram(` + sequenceDiagram + Alice->John:Hello John, how are you? + John-->Alice: I am good thanks!`); + + expect(diagram3.db.getMessages()).toMatchInlineSnapshot(` + Array [ + Object { + "from": "Alice", + "message": "Hello John, how are you?", + "to": "John", + "type": 5, + "wrap": false, + }, + Object { + "from": "John", + "message": "I am good thanks!", + "to": "Alice", + "type": 6, + "wrap": false, + }, + ] + `); + }); +}); + describe('when parsing a sequenceDiagram', function () { beforeEach(function () { // diagram.db = sequenceDb;