Merge branch 'develop' into enhancement/4158_Add_primary_key_beginning_with_asterisk
This commit is contained in:
commit
9b9671b57c
|
@ -17,7 +17,7 @@ services:
|
||||||
- 9000:9000
|
- 9000:9000
|
||||||
- 3333:3333
|
- 3333:3333
|
||||||
cypress:
|
cypress:
|
||||||
image: cypress/included:12.17.0
|
image: cypress/included:12.17.1
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
tty: true
|
tty: true
|
||||||
working_dir: /mermaid
|
working_dir: /mermaid
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"version": "10.2.4",
|
"version": "10.2.4",
|
||||||
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@8.6.5",
|
"packageManager": "pnpm@8.6.7",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"diagram",
|
"diagram",
|
||||||
"markdown",
|
"markdown",
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
"d3-sankey": "^0.12.3",
|
"d3-sankey": "^0.12.3",
|
||||||
"dagre-d3-es": "7.0.10",
|
"dagre-d3-es": "7.0.10",
|
||||||
"dayjs": "^1.11.7",
|
"dayjs": "^1.11.7",
|
||||||
"dompurify": "3.0.4",
|
"dompurify": "3.0.5",
|
||||||
"elkjs": "^0.8.2",
|
"elkjs": "^0.8.2",
|
||||||
"khroma": "^2.0.0",
|
"khroma": "^2.0.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
import c4Db from '../c4Db.js';
|
||||||
|
import c4 from './c4Diagram.jison';
|
||||||
|
import { setConfig } from '../../../config.js';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe.each([
|
||||||
|
['Container', 'container'],
|
||||||
|
['ContainerDb', 'container_db'],
|
||||||
|
['ContainerQueue', 'container_queue'],
|
||||||
|
['Container_Ext', 'external_container'],
|
||||||
|
['ContainerDb_Ext', 'external_container_db'],
|
||||||
|
['ContainerQueue_Ext', 'external_container_queue'],
|
||||||
|
])('parsing a C4 %s', function (macroName, elementName) {
|
||||||
|
beforeEach(function () {
|
||||||
|
c4.parser.yy = c4Db;
|
||||||
|
c4.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a C4 diagram with one Container correctly', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
title Container diagram for Internet Banking Container
|
||||||
|
${macroName}(ContainerAA, "Internet Banking Container", "Technology", "Allows customers to view information about their bank accounts, and make payments.")`);
|
||||||
|
|
||||||
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
|
const shapes = yy.getC4ShapeArray();
|
||||||
|
expect(shapes.length).toBe(1);
|
||||||
|
const onlyShape = shapes[0];
|
||||||
|
|
||||||
|
expect(onlyShape).toEqual({
|
||||||
|
alias: 'ContainerAA',
|
||||||
|
descr: {
|
||||||
|
text: 'Allows customers to view information about their bank accounts, and make payments.',
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
text: 'Internet Banking Container',
|
||||||
|
},
|
||||||
|
link: undefined,
|
||||||
|
sprite: undefined,
|
||||||
|
tags: undefined,
|
||||||
|
parentBoundary: 'global',
|
||||||
|
typeC4Shape: {
|
||||||
|
text: elementName,
|
||||||
|
},
|
||||||
|
techn: {
|
||||||
|
text: 'Technology',
|
||||||
|
},
|
||||||
|
wrap: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the alias', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, "Internet Banking Container")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
alias: 'ContainerAA',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the label', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, "Internet Banking Container")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: 'Internet Banking Container',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the technology', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, "", "Java")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
techn: {
|
||||||
|
text: 'Java',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the description', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, "", "", "Allows customers to view information about their bank accounts, and make payments.")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
descr: {
|
||||||
|
text: 'Allows customers to view information about their bank accounts, and make payments.',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a sprite', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, $sprite="users")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
sprite: 'users',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a link', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, $link="https://github.com/mermaidjs")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
link: 'https://github.com/mermaidjs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse tags', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(ContainerAA, $tags="tag1,tag2")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
tags: 'tag1,tag2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -167,10 +167,10 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
|
||||||
"UpdateRelStyle" { this.begin("update_rel_style"); return 'UPDATE_REL_STYLE';}
|
"UpdateRelStyle" { this.begin("update_rel_style"); return 'UPDATE_REL_STYLE';}
|
||||||
"UpdateLayoutConfig" { this.begin("update_layout_config"); return 'UPDATE_LAYOUT_CONFIG';}
|
"UpdateLayoutConfig" { this.begin("update_layout_config"); return 'UPDATE_LAYOUT_CONFIG';}
|
||||||
|
|
||||||
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config><<EOF>> return "EOF_IN_STRUCT";
|
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext_queue,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config><<EOF>> return "EOF_IN_STRUCT";
|
||||||
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config>[(][ ]*[,] { this.begin("attribute"); return "ATTRIBUTE_EMPTY";}
|
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext_queue,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config>[(][ ]*[,] { this.begin("attribute"); return "ATTRIBUTE_EMPTY";}
|
||||||
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config>[(] { this.begin("attribute"); }
|
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext_queue,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config>[(] { this.begin("attribute"); }
|
||||||
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config,attribute>[)] { this.popState();this.popState();}
|
<person,person_ext,system_ext_queue,system_ext_db,system_ext,system_queue,system_db,system,boundary,enterprise_boundary,system_boundary,container_ext_db,container_ext_queue,container_ext,container_queue,container_db,container,container_boundary,component_ext_db,component_ext,component_queue,component_db,component,node,node_l,node_r,rel,birel,rel_u,rel_d,rel_l,rel_r,rel_b,rel_index,update_el_style,update_rel_style,update_layout_config,attribute>[)] { this.popState();this.popState();}
|
||||||
|
|
||||||
<attribute>",," { return 'ATTRIBUTE_EMPTY';}
|
<attribute>",," { return 'ATTRIBUTE_EMPTY';}
|
||||||
<attribute>"," { }
|
<attribute>"," { }
|
||||||
|
|
|
@ -225,8 +225,8 @@ importers:
|
||||||
specifier: ^1.11.7
|
specifier: ^1.11.7
|
||||||
version: 1.11.7
|
version: 1.11.7
|
||||||
dompurify:
|
dompurify:
|
||||||
specifier: 3.0.4
|
specifier: 3.0.5
|
||||||
version: 3.0.4
|
version: 3.0.5
|
||||||
elkjs:
|
elkjs:
|
||||||
specifier: ^0.8.2
|
specifier: ^0.8.2
|
||||||
version: 0.8.2
|
version: 0.8.2
|
||||||
|
@ -8082,8 +8082,8 @@ packages:
|
||||||
domelementtype: 2.3.0
|
domelementtype: 2.3.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/dompurify@3.0.4:
|
/dompurify@3.0.5:
|
||||||
resolution: {integrity: sha512-ae0mA+Qiqp6C29pqZX3fQgK+F91+F7wobM/v8DRzDqJdZJELXiFUx4PP4pK/mzUS0xkiSEx3Ncd9gr69jg3YsQ==}
|
resolution: {integrity: sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/domutils@3.0.1:
|
/domutils@3.0.1:
|
||||||
|
|
Loading…
Reference in New Issue