collab/mermaid/cypress/integration/rendering/classDiagram-v2.spec.jsblame
View source
6dd74de1import { imgSnapshotTest } from '../../helpers/util.ts';
6dd74de2describe('Class diagram V2', () => {
6dd74de3 it('0: should render a simple class diagram', () => {
6dd74de4 imgSnapshotTest(
6dd74de5 `
6dd74de6 classDiagram-v2
6dd74de7
6dd74de8 classA -- classB : Inheritance
6dd74de9 classA -- classC : link
6dd74de10 classC -- classD : link
6dd74de11 classB -- classD
6dd74de12
6dd74de13 `,
6dd74de14 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de15 );
6dd74de16 });
6dd74de17
6dd74de18 it('1: should render a simple class diagram', () => {
6dd74de19 imgSnapshotTest(
6dd74de20 `
6dd74de21 classDiagram-v2
6dd74de22 Class01 <|-- AveryLongClass : Cool
6dd74de23 &lt;&lt;interface&gt;&gt; Class01
6dd74de24 Class03 *-- Class04
6dd74de25 Class05 o-- Class06
6dd74de26 Class07 .. Class08
6dd74de27 Class09 --> C2 : Where am i?
6dd74de28 Class09 --* C3
6dd74de29 Class09 --|> Class07
6dd74de30 Class12 <|.. Class08
6dd74de31 Class11 ..>Class12
6dd74de32 Class07 : equals()
6dd74de33 Class07 : Object[] elementData
6dd74de34 Class01 : size()
6dd74de35 Class01 : int chimp
6dd74de36 Class01 : int gorilla
6dd74de37 Class01 : -int privateChimp
6dd74de38 Class01 : +int publicGorilla
6dd74de39 Class01 : #int protectedMarmoset
6dd74de40 Class08 <--> C2: Cool label
6dd74de41 class Class10 {
6dd74de42 &lt;&lt;service&gt;&gt;
6dd74de43 int id
6dd74de44 test()
6dd74de45 }
6dd74de46 `,
6dd74de47 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de48 );
6dd74de49 });
6dd74de50
6dd74de51 it('2: should render a simple class diagrams with cardinality', () => {
6dd74de52 imgSnapshotTest(
6dd74de53 `
6dd74de54 classDiagram-v2
6dd74de55 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de56 &lt;&lt;interface&gt;&gt; Class01
6dd74de57 Class03 "1" *-- "*" Class04
6dd74de58 Class05 "1" o-- "many" Class06
6dd74de59 Class07 "1" .. "*" Class08
6dd74de60 Class09 "1" --> "*" C2 : Where am i?
6dd74de61 Class09 "*" --* "*" C3
6dd74de62 Class09 "1" --|> "1" Class07
6dd74de63 Class07 : equals()
6dd74de64 Class07 : Object[] elementData
6dd74de65 Class01 : size()
6dd74de66 Class01 : int chimp
6dd74de67 Class01 : int gorilla
6dd74de68 Class08 "1" <--> "*" C2: Cool label
6dd74de69 class Class10 {
6dd74de70 &lt;&lt;service&gt;&gt;
6dd74de71 int id
6dd74de72 test()
6dd74de73 }
6dd74de74 `,
6dd74de75 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de76 );
6dd74de77 });
6dd74de78
6dd74de79 it('2.1 should render a simple class diagram with different visibilities', () => {
6dd74de80 imgSnapshotTest(
6dd74de81 `
6dd74de82 classDiagram-v2
6dd74de83 Class01 <|-- AveryLongClass : Cool
6dd74de84 &lt;&lt;interface&gt;&gt; Class01
6dd74de85 Class01 : -privateMethod()
6dd74de86 Class01 : +publicMethod()
6dd74de87 Class01 : #protectedMethod()
6dd74de88 Class01 : -int privateChimp
6dd74de89 Class01 : +int publicGorilla
6dd74de90 Class01 : #int protectedMarmoset
6dd74de91 `,
6dd74de92 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de93 );
6dd74de94 });
6dd74de95
6dd74de96 it('3: should render multiple class diagrams', () => {
6dd74de97 imgSnapshotTest(
6dd74de98 [
6dd74de99 `
6dd74de100 classDiagram-v2
6dd74de101 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de102 &lt;&lt;interface&gt;&gt; Class01
6dd74de103 Class03 "1" *-- "*" Class04
6dd74de104 Class05 "1" o-- "many" Class06
6dd74de105 Class07 "1" .. "*" Class08
6dd74de106 Class09 "1" --> "*" C2 : Where am i?
6dd74de107 Class09 "*" --* "*" C3
6dd74de108 Class09 "1" --|> "1" Class07
6dd74de109 Class07 : equals()
6dd74de110 Class07 : Object[] elementData
6dd74de111 Class01 : size()
6dd74de112 Class01 : int chimp
6dd74de113 Class01 : int gorilla
6dd74de114 Class08 "1" <--> "*" C2: Cool label
6dd74de115 class Class10 {
6dd74de116 &lt;&lt;service&gt;&gt;
6dd74de117 int id
6dd74de118 test()
6dd74de119 }
6dd74de120 `,
6dd74de121 `
6dd74de122 classDiagram-v2
6dd74de123 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de124 &lt;&lt;interface&gt;&gt; Class01
6dd74de125 Class03 "1" *-- "*" Class04
6dd74de126 Class05 "1" o-- "many" Class06
6dd74de127 Class07 "1" .. "*" Class08
6dd74de128 Class09 "1" --> "*" C2 : Where am i?
6dd74de129 Class09 "*" --* "*" C3
6dd74de130 Class09 "1" --|> "1" Class07
6dd74de131 Class07 : equals()
6dd74de132 Class07 : Object[] elementData
6dd74de133 Class01 : size()
6dd74de134 Class01 : int chimp
6dd74de135 Class01 : int gorilla
6dd74de136 Class08 "1" <--> "*" C2: Cool label
6dd74de137 class Class10 {
6dd74de138 &lt;&lt;service&gt;&gt;
6dd74de139 int id
6dd74de140 test()
6dd74de141 }
6dd74de142 `,
6dd74de143 ],
6dd74de144 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de145 );
6dd74de146 });
6dd74de147
6dd74de148 it('4: should render a simple class diagram with comments', () => {
6dd74de149 imgSnapshotTest(
6dd74de150 `
6dd74de151 classDiagram-v2
6dd74de152 %% this is a comment
6dd74de153 Class01 <|-- AveryLongClass : Cool
6dd74de154 &lt;&lt;interface&gt;&gt; Class01
6dd74de155 Class03 *-- Class04
6dd74de156 Class05 o-- Class06
6dd74de157 Class07 .. Class08
6dd74de158 Class09 --> C2 : Where am i?
6dd74de159 Class09 --* C3
6dd74de160 Class09 --|> Class07
6dd74de161 Class07 : equals()
6dd74de162 Class07 : Object[] elementData
6dd74de163 Class01 : size()
6dd74de164 Class01 : int chimp
6dd74de165 Class01 : int gorilla
6dd74de166 Class08 <--> C2: Cool label
6dd74de167 class Class10 {
6dd74de168 &lt;&lt;service&gt;&gt;
6dd74de169 int id
6dd74de170 test()
6dd74de171 }
6dd74de172 `,
6dd74de173 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de174 );
6dd74de175 });
6dd74de176
6dd74de177 it('5: should render a simple class diagram with abstract method', () => {
6dd74de178 imgSnapshotTest(
6dd74de179 `
6dd74de180 classDiagram-v2
6dd74de181 Class01 <|-- AveryLongClass : Cool
6dd74de182 Class01 : someMethod()*
6dd74de183 `,
6dd74de184 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de185 );
6dd74de186 });
6dd74de187
6dd74de188 it('6: should render a simple class diagram with static method', () => {
6dd74de189 imgSnapshotTest(
6dd74de190 `
6dd74de191 classDiagram-v2
6dd74de192 Class01 <|-- AveryLongClass : Cool
6dd74de193 Class01 : someMethod()$
6dd74de194 `,
6dd74de195 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de196 );
6dd74de197 });
6dd74de198
6dd74de199 it('7: should render a simple class diagram with Generic class', () => {
6dd74de200 imgSnapshotTest(
6dd74de201 `
6dd74de202 classDiagram-v2
6dd74de203 class Class01~T~
6dd74de204 Class01 : size()
6dd74de205 Class01 : int chimp
6dd74de206 Class01 : int gorilla
6dd74de207 Class08 <--> C2: Cool label
6dd74de208 class Class10~T~ {
6dd74de209 &lt;&lt;service&gt;&gt;
6dd74de210 int id
6dd74de211 test()
6dd74de212 }
6dd74de213 `,
6dd74de214 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de215 );
6dd74de216 });
6dd74de217
6dd74de218 it('8: should render a simple class diagram with Generic class and relations', () => {
6dd74de219 imgSnapshotTest(
6dd74de220 `
6dd74de221 classDiagram-v2
6dd74de222 Class01~T~ <|-- AveryLongClass : Cool
6dd74de223 Class03~T~ *-- Class04~T~
6dd74de224 Class01 : size()
6dd74de225 Class01 : int chimp
6dd74de226 Class01 : int gorilla
6dd74de227 Class08 <--> C2: Cool label
6dd74de228 class Class10~T~ {
6dd74de229 &lt;&lt;service&gt;&gt;
6dd74de230 int id
6dd74de231 test()
6dd74de232 }
6dd74de233 `,
6dd74de234 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de235 );
6dd74de236 });
6dd74de237
6dd74de238 it('9: should render a simple class diagram with clickable link', () => {
6dd74de239 imgSnapshotTest(
6dd74de240 `
6dd74de241 classDiagram-v2
6dd74de242 Class01~T~ <|-- AveryLongClass : Cool
6dd74de243 Class03~T~ *-- Class04~T~
6dd74de244 Class01 : size()
6dd74de245 Class01 : int chimp
6dd74de246 Class01 : int gorilla
6dd74de247 Class08 <--> C2: Cool label
6dd74de248 class Class10~T~ {
6dd74de249 &lt;&lt;service&gt;&gt;
6dd74de250 int id
6dd74de251 test()
6dd74de252 }
6dd74de253 link Class01 "google.com" "A Tooltip"
6dd74de254 `,
6dd74de255 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de256 );
6dd74de257 });
6dd74de258
6dd74de259 it('10: should render a simple class diagram with clickable callback', () => {
6dd74de260 imgSnapshotTest(
6dd74de261 `
6dd74de262 classDiagram-v2
6dd74de263 Class01~T~ <|-- AveryLongClass : Cool
6dd74de264 Class03~T~ *-- Class04~T~
6dd74de265 Class01 : size()
6dd74de266 Class01 : int chimp
6dd74de267 Class01 : int gorilla
6dd74de268 Class08 <--> C2: Cool label
6dd74de269 class Class10~T~ {
6dd74de270 &lt;&lt;service&gt;&gt;
6dd74de271 int id
6dd74de272 test()
6dd74de273 }
6dd74de274 callback Class01 "functionCall" "A Tooltip"
6dd74de275 `,
6dd74de276 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de277 );
6dd74de278 });
6dd74de279
6dd74de280 it('11: should render a simple class diagram with return type on method', () => {
6dd74de281 imgSnapshotTest(
6dd74de282 `
6dd74de283 classDiagram-v2
6dd74de284 class Class10~T~ {
6dd74de285 int[] id
6dd74de286 test(int[] ids) bool
6dd74de287 testArray() bool[]
6dd74de288 }
6dd74de289 `,
6dd74de290 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de291 );
6dd74de292 });
6dd74de293
6dd74de294 it('12: should render a simple class diagram with generic types', () => {
6dd74de295 imgSnapshotTest(
6dd74de296 `
6dd74de297 classDiagram-v2
6dd74de298 class Class10~T~ {
6dd74de299 int[] id
6dd74de300 List~int~ ids
6dd74de301 test(List~int~ ids) List~bool~
6dd74de302 testArray() bool[]
6dd74de303 }
6dd74de304 `,
6dd74de305 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de306 );
6dd74de307 });
6dd74de308
6dd74de309 it('13: should render a simple class diagram with css classes applied', () => {
6dd74de310 imgSnapshotTest(
6dd74de311 `
6dd74de312 classDiagram-v2
6dd74de313 class Class10 {
6dd74de314 int[] id
6dd74de315 List~int~ ids
6dd74de316 test(List~int~ ids) List~bool~
6dd74de317 testArray() bool[]
6dd74de318 }
6dd74de319
6dd74de320 cssClass "Class10" exClass2
6dd74de321 `,
6dd74de322 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de323 );
6dd74de324 });
6dd74de325
6dd74de326 it('14: should render a simple class diagram with css classes applied directly', () => {
6dd74de327 imgSnapshotTest(
6dd74de328 `
6dd74de329 classDiagram-v2
6dd74de330 class Class10:::exClass2 {
6dd74de331 int[] id
6dd74de332 List~int~ ids
6dd74de333 test(List~int~ ids) List~bool~
6dd74de334 testArray() bool[]
6dd74de335 }
6dd74de336 `,
6dd74de337 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de338 );
6dd74de339 });
6dd74de340
6dd74de341 it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
6dd74de342 imgSnapshotTest(
6dd74de343 `
6dd74de344 classDiagram-v2
6dd74de345 class Class10
6dd74de346 class Class20
6dd74de347
6dd74de348 cssClass "Class10, class20" exClass2
6dd74de349 `,
6dd74de350 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de351 );
6dd74de352 });
6dd74de353
6dd74de354 it('16a: should render a simple class diagram with static field', () => {
6dd74de355 imgSnapshotTest(
6dd74de356 `
6dd74de357 classDiagram-v2
6dd74de358 class Foo {
6dd74de359 +String bar$
6dd74de360 }
6dd74de361 `,
6dd74de362 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de363 );
6dd74de364 });
6dd74de365
6dd74de366 it('16b: should handle the direction statement with TB', () => {
6dd74de367 imgSnapshotTest(
6dd74de368 `
6dd74de369 classDiagram
6dd74de370 direction TB
6dd74de371 class Student {
6dd74de372 -idCard : IdCard
6dd74de373 }
6dd74de374 class IdCard{
6dd74de375 -id : int
6dd74de376 -name : string
6dd74de377 }
6dd74de378 class Bike{
6dd74de379 -id : int
6dd74de380 -name : string
6dd74de381 }
6dd74de382 Student "1" --o "1" IdCard : carries
6dd74de383 Student "1" --o "1" Bike : rides
6dd74de384
6dd74de385 `,
6dd74de386 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de387 );
6dd74de388 });
6dd74de389 it('17a: should handle the direction statement with BT', () => {
6dd74de390 imgSnapshotTest(
6dd74de391 `
6dd74de392 classDiagram
6dd74de393 direction BT
6dd74de394 class Student {
6dd74de395 -idCard : IdCard
6dd74de396 }
6dd74de397 class IdCard{
6dd74de398 -id : int
6dd74de399 -name : string
6dd74de400 }
6dd74de401 class Bike{
6dd74de402 -id : int
6dd74de403 -name : string
6dd74de404 }
6dd74de405 Student "1" --o "1" IdCard : carries
6dd74de406 Student "1" --o "1" Bike : rides
6dd74de407
6dd74de408 `,
6dd74de409 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de410 );
6dd74de411 });
6dd74de412 it('17b: should handle the direction statement with RL', () => {
6dd74de413 imgSnapshotTest(
6dd74de414 `
6dd74de415 classDiagram
6dd74de416 direction RL
6dd74de417 class Student {
6dd74de418 -idCard : IdCard
6dd74de419 }
6dd74de420 class IdCard{
6dd74de421 -id : int
6dd74de422 -name : string
6dd74de423 }
6dd74de424 class Bike{
6dd74de425 -id : int
6dd74de426 -name : string
6dd74de427 }
6dd74de428 Student "1" --o "1" IdCard : carries
6dd74de429 Student "1" --o "1" Bike : rides
6dd74de430
6dd74de431 `,
6dd74de432 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de433 );
6dd74de434 });
6dd74de435
6dd74de436 it('18a: should handle the direction statement with LR', () => {
6dd74de437 imgSnapshotTest(
6dd74de438 `
6dd74de439 classDiagram
6dd74de440 direction LR
6dd74de441 class Student {
6dd74de442 -idCard : IdCard
6dd74de443 }
6dd74de444 class IdCard{
6dd74de445 -id : int
6dd74de446 -name : string
6dd74de447 }
6dd74de448 class Bike{
6dd74de449 -id : int
6dd74de450 -name : string
6dd74de451 }
6dd74de452 Student "1" --o "1" IdCard : carries
6dd74de453 Student "1" --o "1" Bike : rides
6dd74de454
6dd74de455 `,
6dd74de456 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de457 );
6dd74de458 });
6dd74de459
6dd74de460 it('18b: should render a simple class diagram with notes', () => {
6dd74de461 imgSnapshotTest(
6dd74de462 `
6dd74de463 classDiagram-v2
6dd74de464 note "I love this diagram!\nDo you love it?"
6dd74de465 class Class10 {
6dd74de466 int id
6dd74de467 size()
6dd74de468 }
6dd74de469 note for Class10 "Cool class\nI said it's very cool class!"
6dd74de470
6dd74de471 `,
6dd74de472 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de473 );
6dd74de474 });
6dd74de475
6dd74de476 it('1433: should render a simple class with a title', () => {
6dd74de477 imgSnapshotTest(
6dd74de478 `---
6dd74de479title: simple class diagram
6dd74de480---
6dd74de481classDiagram-v2
6dd74de482class Class10
6dd74de483`
6dd74de484 );
6dd74de485 });
6dd74de486
6dd74de487 it('should render a class with text label', () => {
6dd74de488 imgSnapshotTest(
6dd74de489 `classDiagram
6dd74de490 class C1["Class 1 with text label"]
6dd74de491 C1 --> C2`
6dd74de492 );
6dd74de493 });
6dd74de494
6dd74de495 it('should render two classes with text labels', () => {
6dd74de496 imgSnapshotTest(
6dd74de497 `classDiagram
6dd74de498 class C1["Class 1 with text label"]
6dd74de499 class C2["Class 2 with chars @?"]
6dd74de500 C1 --> C2`
6dd74de501 );
6dd74de502 });
6dd74de503 it('should render a class with a text label, members and annotation', () => {
6dd74de504 imgSnapshotTest(
6dd74de505 `classDiagram
6dd74de506 class C1["Class 1 with text label"] {
6dd74de507 &lt;&lt;interface&gt;&gt;
6dd74de508 +member1
6dd74de509 }
6dd74de510 C1 --> C2`
6dd74de511 );
6dd74de512 });
6dd74de513 it('should render multiple classes with same text labels', () => {
6dd74de514 imgSnapshotTest(
6dd74de515 `classDiagram
6dd74de516class C1["Class with text label"]
6dd74de517class C2["Class with text label"]
6dd74de518class C3["Class with text label"]
6dd74de519C1 --> C2
6dd74de520C3 ..> C2
6dd74de521 `
6dd74de522 );
6dd74de523 });
6dd74de524 it('should render classes with different text labels', () => {
6dd74de525 imgSnapshotTest(
6dd74de526 `classDiagram
6dd74de527class C1["OneWord"]
6dd74de528class C2["With, Comma"]
6dd74de529class C3["With (Brackets)"]
6dd74de530class C4["With [Brackets]"]
6dd74de531class C5["With {Brackets}"]
6dd74de532class C7["With 1 number"]
6dd74de533class C8["With . period..."]
6dd74de534class C9["With - dash"]
6dd74de535class C10["With _ underscore"]
6dd74de536class C11["With ' single quote"]
6dd74de537class C12["With ~!@#$%^&*()_+=-/?"]
6dd74de538class C13["With Città foreign language"]
6dd74de539 `
6dd74de540 );
6dd74de541 });
6dd74de542
6dd74de543 it('should render classLabel if class has already been defined earlier', () => {
6dd74de544 imgSnapshotTest(
6dd74de545 `classDiagram
6dd74de546 Animal <|-- Duck
6dd74de547 class Duck["Duck with text label"]
6dd74de548`
6dd74de549 );
6dd74de550 });
6dd74de551 it('should add classes namespaces', function () {
6dd74de552 imgSnapshotTest(
6dd74de553 `
6dd74de554 classDiagram
6dd74de555 namespace Namespace1 {
6dd74de556 class C1
6dd74de557 class C2
6dd74de558 }
6dd74de559 C1 --> C2
6dd74de560 class C3
6dd74de561 class C4
6dd74de562 `
6dd74de563 );
6dd74de564 });
6dd74de565 it('should add notes in namespaces', function () {
6dd74de566 imgSnapshotTest(
6dd74de567 `
6dd74de568 classDiagram
6dd74de569 note "This is a outer note"
6dd74de570 note for C1 "This is a outer note for C1"
6dd74de571 namespace Namespace1 {
6dd74de572 note "This is a inner note"
6dd74de573 note for C1 "This is a inner note for C1"
6dd74de574 class C1
6dd74de575 }
6dd74de576 `
6dd74de577 );
6dd74de578 });
6dd74de579 it('should render a simple class diagram with no members', () => {
6dd74de580 imgSnapshotTest(
6dd74de581 `
6dd74de582 classDiagram-v2
6dd74de583 class Class10
6dd74de584 `,
6dd74de585 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de586 );
6dd74de587 });
6dd74de588 it('should render a simple class diagram with style definition', () => {
6dd74de589 imgSnapshotTest(
6dd74de590 `
6dd74de591 classDiagram-v2
6dd74de592 class Class10
6dd74de593 style Class10 fill:#f9f,stroke:#333,stroke-width:4px
6dd74de594 `,
6dd74de595 { logLevel: 1, flowchart: { htmlLabels: false } }
6dd74de596 );
6dd74de597 });
6dd74de598
6dd74de599 it('renders a class diagram with a generic class in a namespace', () => {
6dd74de600 const diagramDefinition = `
6dd74de601 classDiagram-v2
6dd74de602 namespace Company.Project.Module {
6dd74de603 class GenericClass~T~ {
6dd74de604 +addItem(item: T)
6dd74de605 +getItem() T
6dd74de606 }
6dd74de607 }
6dd74de608 `;
6dd74de609
6dd74de610 imgSnapshotTest(diagramDefinition);
6dd74de611 });
6dd74de612
6dd74de613 it('renders a class diagram with nested namespaces and relationships', () => {
6dd74de614 const diagramDefinition = `
6dd74de615 classDiagram-v2
6dd74de616 namespace Company.Project.Module.SubModule {
6dd74de617 class Report {
6dd74de618 +generatePDF(data: List)
6dd74de619 +generateCSV(data: List)
6dd74de620 }
6dd74de621 }
6dd74de622 namespace Company.Project.Module {
6dd74de623 class Admin {
6dd74de624 +generateReport()
6dd74de625 }
6dd74de626 }
6dd74de627 Admin --> Report : generates
6dd74de628 `;
6dd74de629
6dd74de630 imgSnapshotTest(diagramDefinition);
6dd74de631 });
6dd74de632
6dd74de633 it('renders a class diagram with multiple classes and relationships in a namespace', () => {
6dd74de634 const diagramDefinition = `
6dd74de635 classDiagram-v2
6dd74de636 namespace Company.Project.Module {
6dd74de637 class User {
6dd74de638 +login(username: String, password: String)
6dd74de639 +logout()
6dd74de640 }
6dd74de641 class Admin {
6dd74de642 +addUser(user: User)
6dd74de643 +removeUser(user: User)
6dd74de644 +generateReport()
6dd74de645 }
6dd74de646 class Report {
6dd74de647 +generatePDF(reportData: List)
6dd74de648 +generateCSV(reportData: List)
6dd74de649 }
6dd74de650 }
6dd74de651 Admin --> User : manages
6dd74de652 Admin --> Report : generates
6dd74de653 `;
6dd74de654
6dd74de655 imgSnapshotTest(diagramDefinition);
6dd74de656 });
6dd74de657});