From a5aef9e33097709d60adec1bbd82398fef13c5d1 Mon Sep 17 00:00:00 2001 From: Harman Goei <5001432+hrgui@users.noreply.github.com> Date: Tue, 9 Aug 2022 21:20:38 -0700 Subject: [PATCH 1/2] fix(Diagram): fix persisted data due to db not being cleared before parsing --- src/Diagram.js | 2 + src/diagrams/sequence/sequenceDiagram.spec.js | 75 +++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/src/Diagram.js b/src/Diagram.js index a87ed42fb5..44a02626cb 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 5f09e0e2d2..0ee00135d4 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; From 6e5eeb72153f1fc2b11354fd9efa575aff39b90f Mon Sep 17 00:00:00 2001 From: Harman Goei <5001432+hrgui@users.noreply.github.com> Date: Tue, 9 Aug 2022 22:22:40 -0700 Subject: [PATCH 2/2] fix(Diagram): C4C diagram does not have a db.clear method --- src/Diagram.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Diagram.js b/src/Diagram.js index 44a02626cb..16dfb89d39 100644 --- a/src/Diagram.js +++ b/src/Diagram.js @@ -18,7 +18,7 @@ class Diagram { // console.log('this.type', this.type, diagrams[this.type]); // Setup diagram this.db = diagrams[this.type].db; - this.db.clear(); + this.db.clear?.(); this.renderer = diagrams[this.type].renderer; this.parser = diagrams[this.type].parser;