collab/mermaid/cypress/integration/rendering/classDiagram-v3.spec.jsblame
View source
6dd74de1import { imgSnapshotTest } from '../../helpers/util.ts';
6dd74de2describe('Class diagram V3', () => {
6dd74de3 it('0: should render a simple class diagram', () => {
6dd74de4 imgSnapshotTest(
6dd74de5 `
6dd74de6 classDiagram
6dd74de7
6dd74de8 classA -- classB : Inheritance
6dd74de9 classA -- classC : link
6dd74de10 classC -- classD : link
6dd74de11 classB -- classD
6dd74de12
6dd74de13 `,
6dd74de14 { logLevel: 1, htmlLabels: true }
6dd74de15 );
6dd74de16 });
6dd74de17
6dd74de18 it('1: should render a simple class diagram', () => {
6dd74de19 imgSnapshotTest(
6dd74de20 `
6dd74de21 classDiagram
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, htmlLabels: true }
6dd74de48 );
6dd74de49 });
6dd74de50
6dd74de51 it('1.1: should render a simple class diagram without htmlLabels', () => {
6dd74de52 imgSnapshotTest(
6dd74de53 `
6dd74de54 classDiagram
6dd74de55 Class01 <|-- AveryLongClass : Cool
6dd74de56 &lt;&lt;interface&gt;&gt; Class01
6dd74de57 Class03 *-- Class04
6dd74de58 Class05 o-- Class06
6dd74de59 Class07 .. Class08
6dd74de60 Class09 --> C2 : Where am i?
6dd74de61 Class09 --* C3
6dd74de62 Class09 --|> Class07
6dd74de63 Class12 <|.. Class08
6dd74de64 Class11 ..>Class12
6dd74de65 Class07 : equals()
6dd74de66 Class07 : Object[] elementData
6dd74de67 Class01 : size()
6dd74de68 Class01 : int chimp
6dd74de69 Class01 : int gorilla
6dd74de70 Class01 : -int privateChimp
6dd74de71 Class01 : +int publicGorilla
6dd74de72 Class01 : #int protectedMarmoset
6dd74de73 Class08 <--> C2: Cool label
6dd74de74 class Class10 {
6dd74de75 &lt;&lt;service&gt;&gt;
6dd74de76 int id
6dd74de77 test()
6dd74de78 }
6dd74de79 `,
6dd74de80 { logLevel: 1, htmlLabels: false }
6dd74de81 );
6dd74de82 });
6dd74de83
6dd74de84 it('2: should render a simple class diagrams with cardinality', () => {
6dd74de85 imgSnapshotTest(
6dd74de86 `
6dd74de87 classDiagram
6dd74de88 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de89 &lt;&lt;interface&gt;&gt; Class01
6dd74de90 Class03 "1" *-- "*" Class04
6dd74de91 Class05 "1" o-- "many" Class06
6dd74de92 Class07 "1" .. "*" Class08
6dd74de93 Class09 "1" --> "*" C2 : Where am i?
6dd74de94 Class09 "*" --* "*" C3
6dd74de95 Class09 "1" --|> "1" Class07
6dd74de96 Class07 : equals()
6dd74de97 Class07 : Object[] elementData
6dd74de98 Class01 : size()
6dd74de99 Class01 : int chimp
6dd74de100 Class01 : int gorilla
6dd74de101 Class08 "1" <--> "*" C2: Cool label
6dd74de102 class Class10 {
6dd74de103 &lt;&lt;service&gt;&gt;
6dd74de104 int id
6dd74de105 test()
6dd74de106 }
6dd74de107 `,
6dd74de108 { logLevel: 1, htmlLabels: true }
6dd74de109 );
6dd74de110 });
6dd74de111
6dd74de112 it('2.1: should render a simple class diagrams with cardinality without htmlLabels', () => {
6dd74de113 imgSnapshotTest(
6dd74de114 `
6dd74de115 classDiagram
6dd74de116 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de117 &lt;&lt;interface&gt;&gt; Class01
6dd74de118 Class03 "1" *-- "*" Class04
6dd74de119 Class05 "1" o-- "many" Class06
6dd74de120 Class07 "1" .. "*" Class08
6dd74de121 Class09 "1" --> "*" C2 : Where am i?
6dd74de122 Class09 "*" --* "*" C3
6dd74de123 Class09 "1" --|> "1" Class07
6dd74de124 Class07 : equals()
6dd74de125 Class07 : Object[] elementData
6dd74de126 Class01 : size()
6dd74de127 Class01 : int chimp
6dd74de128 Class01 : int gorilla
6dd74de129 Class08 "1" <--> "*" C2: Cool label
6dd74de130 class Class10 {
6dd74de131 &lt;&lt;service&gt;&gt;
6dd74de132 int id
6dd74de133 test()
6dd74de134 }
6dd74de135 `,
6dd74de136 { logLevel: 1, htmlLabels: false }
6dd74de137 );
6dd74de138 });
6dd74de139
6dd74de140 it('2.2 should render a simple class diagram with different visibilities', () => {
6dd74de141 imgSnapshotTest(
6dd74de142 `
6dd74de143 classDiagram
6dd74de144 Class01 <|-- AveryLongClass : Cool
6dd74de145 &lt;&lt;interface&gt;&gt; Class01
6dd74de146 Class01 : -privateMethod()
6dd74de147 Class01 : +publicMethod()
6dd74de148 Class01 : #protectedMethod()
6dd74de149 Class01 : -int privateChimp
6dd74de150 Class01 : +int publicGorilla
6dd74de151 Class01 : #int protectedMarmoset
6dd74de152 `,
6dd74de153 { logLevel: 1, htmlLabels: true }
6dd74de154 );
6dd74de155 });
6dd74de156 it('2.3 should render a simple class diagram with different visibilities without htmlLabels', () => {
6dd74de157 imgSnapshotTest(
6dd74de158 `
6dd74de159 classDiagram
6dd74de160 Class01 <|-- AveryLongClass : Cool
6dd74de161 &lt;&lt;interface&gt;&gt; Class01
6dd74de162 Class01 : -privateMethod()
6dd74de163 Class01 : +publicMethod()
6dd74de164 Class01 : #protectedMethod()
6dd74de165 Class01 : -int privateChimp
6dd74de166 Class01 : +int publicGorilla
6dd74de167 Class01 : #int protectedMarmoset
6dd74de168 `,
6dd74de169 { logLevel: 1, htmlLabels: false }
6dd74de170 );
6dd74de171 });
6dd74de172
6dd74de173 it('3: should render multiple class diagrams', () => {
6dd74de174 imgSnapshotTest(
6dd74de175 [
6dd74de176 `
6dd74de177 classDiagram
6dd74de178 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de179 &lt;&lt;interface&gt;&gt; Class01
6dd74de180 Class03 "1" *-- "*" Class04
6dd74de181 Class05 "1" o-- "many" Class06
6dd74de182 Class07 "1" .. "*" Class08
6dd74de183 Class09 "1" --> "*" C2 : Where am i?
6dd74de184 Class09 "*" --* "*" C3
6dd74de185 Class09 "1" --|> "1" Class07
6dd74de186 Class07 : equals()
6dd74de187 Class07 : Object[] elementData
6dd74de188 Class01 : size()
6dd74de189 Class01 : int chimp
6dd74de190 Class01 : int gorilla
6dd74de191 Class08 "1" <--> "*" C2: Cool label
6dd74de192 class Class10 {
6dd74de193 &lt;&lt;service&gt;&gt;
6dd74de194 int id
6dd74de195 test()
6dd74de196 }
6dd74de197 `,
6dd74de198 `
6dd74de199 classDiagram
6dd74de200 Class01 "1" <|--|> "*" AveryLongClass : Cool
6dd74de201 &lt;&lt;interface&gt;&gt; Class01
6dd74de202 Class03 "1" *-- "*" Class04
6dd74de203 Class05 "1" o-- "many" Class06
6dd74de204 Class07 "1" .. "*" Class08
6dd74de205 Class09 "1" --> "*" C2 : Where am i?
6dd74de206 Class09 "*" --* "*" C3
6dd74de207 Class09 "1" --|> "1" Class07
6dd74de208 Class07 : equals()
6dd74de209 Class07 : Object[] elementData
6dd74de210 Class01 : size()
6dd74de211 Class01 : int chimp
6dd74de212 Class01 : int gorilla
6dd74de213 Class08 "1" <--> "*" C2: Cool label
6dd74de214 class Class10 {
6dd74de215 &lt;&lt;service&gt;&gt;
6dd74de216 int id
6dd74de217 test()
6dd74de218 }
6dd74de219 `,
6dd74de220 ],
6dd74de221 { logLevel: 1, htmlLabels: true }
6dd74de222 );
6dd74de223 });
6dd74de224
6dd74de225 it('4: should render a simple class diagram with comments', () => {
6dd74de226 imgSnapshotTest(
6dd74de227 `
6dd74de228 classDiagram
6dd74de229 %% this is a comment
6dd74de230 Class01 <|-- AveryLongClass : Cool
6dd74de231 &lt;&lt;interface&gt;&gt; Class01
6dd74de232 Class03 *-- Class04
6dd74de233 Class05 o-- Class06
6dd74de234 Class07 .. Class08
6dd74de235 Class09 --> C2 : Where am i?
6dd74de236 Class09 --* C3
6dd74de237 Class09 --|> Class07
6dd74de238 Class07 : equals()
6dd74de239 Class07 : Object[] elementData
6dd74de240 Class01 : size()
6dd74de241 Class01 : int chimp
6dd74de242 Class01 : int gorilla
6dd74de243 Class08 <--> C2: Cool label
6dd74de244 class Class10 {
6dd74de245 &lt;&lt;service&gt;&gt;
6dd74de246 int id
6dd74de247 test()
6dd74de248 }
6dd74de249 `,
6dd74de250 { logLevel: 1, htmlLabels: true }
6dd74de251 );
6dd74de252 });
6dd74de253
6dd74de254 it('5: should render a simple class diagram with abstract method', () => {
6dd74de255 imgSnapshotTest(
6dd74de256 `
6dd74de257 classDiagram
6dd74de258 Class01 <|-- AveryLongClass : Cool
6dd74de259 Class01 : someMethod()*
6dd74de260 `,
6dd74de261 { logLevel: 1, htmlLabels: true }
6dd74de262 );
6dd74de263 });
6dd74de264
6dd74de265 it('5.1: should render a simple class diagram with abstract method without htmlLabels', () => {
6dd74de266 imgSnapshotTest(
6dd74de267 `
6dd74de268 classDiagram
6dd74de269 Class01 <|-- AveryLongClass : Cool
6dd74de270 Class01 : someMethod()*
6dd74de271 `,
6dd74de272 { logLevel: 1, htmlLabels: false }
6dd74de273 );
6dd74de274 });
6dd74de275
6dd74de276 it('6: should render a simple class diagram with static method', () => {
6dd74de277 imgSnapshotTest(
6dd74de278 `
6dd74de279 classDiagram
6dd74de280 Class01 <|-- AveryLongClass : Cool
6dd74de281 Class01 : someMethod()$
6dd74de282 `,
6dd74de283 { logLevel: 1, htmlLabels: true }
6dd74de284 );
6dd74de285 });
6dd74de286
6dd74de287 it('6.1: should render a simple class diagram with static method without htmlLabels', () => {
6dd74de288 imgSnapshotTest(
6dd74de289 `
6dd74de290 classDiagram
6dd74de291 Class01 <|-- AveryLongClass : Cool
6dd74de292 Class01 : someMethod()$
6dd74de293 `,
6dd74de294 { logLevel: 1, htmlLabels: false }
6dd74de295 );
6dd74de296 });
6dd74de297
6dd74de298 it('7: should render a simple class diagram with Generic class', () => {
6dd74de299 imgSnapshotTest(
6dd74de300 `
6dd74de301 classDiagram
6dd74de302 class Class01~T~
6dd74de303 Class01 : size()
6dd74de304 Class01 : int chimp
6dd74de305 Class01 : int gorilla
6dd74de306 Class08 <--> C2: Cool label
6dd74de307 class Class10~T~ {
6dd74de308 &lt;&lt;service&gt;&gt;
6dd74de309 int id
6dd74de310 test()
6dd74de311 }
6dd74de312 `,
6dd74de313 { logLevel: 1, htmlLabels: true }
6dd74de314 );
6dd74de315 });
6dd74de316
6dd74de317 it('7.1: should render a simple class diagram with Generic class without htmlLabels', () => {
6dd74de318 imgSnapshotTest(
6dd74de319 `
6dd74de320 classDiagram
6dd74de321 class Class01~T~
6dd74de322 Class01 : size()
6dd74de323 Class01 : int chimp
6dd74de324 Class01 : int gorilla
6dd74de325 Class08 <--> C2: Cool label
6dd74de326 class Class10~T~ {
6dd74de327 &lt;&lt;service&gt;&gt;
6dd74de328 int id
6dd74de329 test()
6dd74de330 }
6dd74de331 `,
6dd74de332 { logLevel: 1, htmlLabels: false }
6dd74de333 );
6dd74de334 });
6dd74de335
6dd74de336 it('8: should render a simple class diagram with Generic class and relations', () => {
6dd74de337 imgSnapshotTest(
6dd74de338 `
6dd74de339 classDiagram
6dd74de340 Class01~T~ <|-- AveryLongClass : Cool
6dd74de341 Class03~T~ *-- Class04~T~
6dd74de342 Class01 : size()
6dd74de343 Class01 : int chimp
6dd74de344 Class01 : int gorilla
6dd74de345 Class08 <--> C2: Cool label
6dd74de346 class Class10~T~ {
6dd74de347 &lt;&lt;service&gt;&gt;
6dd74de348 int id
6dd74de349 test()
6dd74de350 }
6dd74de351 `,
6dd74de352 { logLevel: 1, htmlLabels: true }
6dd74de353 );
6dd74de354 });
6dd74de355
6dd74de356 it('9: should render a simple class diagram with clickable link', () => {
6dd74de357 imgSnapshotTest(
6dd74de358 `
6dd74de359 classDiagram
6dd74de360 Class01~T~ <|-- AveryLongClass : Cool
6dd74de361 Class03~T~ *-- Class04~T~
6dd74de362 Class01 : size()
6dd74de363 Class01 : int chimp
6dd74de364 Class01 : int gorilla
6dd74de365 Class08 <--> C2: Cool label
6dd74de366 class Class10~T~ {
6dd74de367 &lt;&lt;service&gt;&gt;
6dd74de368 int id
6dd74de369 test()
6dd74de370 }
6dd74de371 link Class01 "google.com" "A Tooltip"
6dd74de372 `,
6dd74de373 { logLevel: 1, htmlLabels: true }
6dd74de374 );
6dd74de375 });
6dd74de376
6dd74de377 it('10: should render a simple class diagram with clickable callback', () => {
6dd74de378 imgSnapshotTest(
6dd74de379 `
6dd74de380 classDiagram
6dd74de381 Class01~T~ <|-- AveryLongClass : Cool
6dd74de382 Class03~T~ *-- Class04~T~
6dd74de383 Class01 : size()
6dd74de384 Class01 : int chimp
6dd74de385 Class01 : int gorilla
6dd74de386 Class08 <--> C2: Cool label
6dd74de387 class Class10~T~ {
6dd74de388 &lt;&lt;service&gt;&gt;
6dd74de389 int id
6dd74de390 test()
6dd74de391 }
6dd74de392 callback Class01 "functionCall" "A Tooltip"
6dd74de393 `,
6dd74de394 { logLevel: 1, htmlLabels: true }
6dd74de395 );
6dd74de396 });
6dd74de397
6dd74de398 it('11: should render a simple class diagram with return type on method', () => {
6dd74de399 imgSnapshotTest(
6dd74de400 `
6dd74de401 classDiagram
6dd74de402 class Class10~T~ {
6dd74de403 int[] id
6dd74de404 test(int[] ids) bool
6dd74de405 testArray() bool[]
6dd74de406 }
6dd74de407 `,
6dd74de408 { logLevel: 1, htmlLabels: true }
6dd74de409 );
6dd74de410 });
6dd74de411
6dd74de412 it('11.1: should render a simple class diagram with return type on method without htmlLabels', () => {
6dd74de413 imgSnapshotTest(
6dd74de414 `
6dd74de415 classDiagram
6dd74de416 class Class10~T~ {
6dd74de417 int[] id
6dd74de418 test(int[] ids) bool
6dd74de419 testArray() bool[]
6dd74de420 }
6dd74de421 `,
6dd74de422 { logLevel: 1, htmlLabels: false }
6dd74de423 );
6dd74de424 });
6dd74de425
6dd74de426 it('12: should render a simple class diagram with generic types', () => {
6dd74de427 imgSnapshotTest(
6dd74de428 `
6dd74de429 classDiagram
6dd74de430 class Class10~T~ {
6dd74de431 int[] id
6dd74de432 List~int~ ids
6dd74de433 test(List~int~ ids) List~bool~
6dd74de434 testArray() bool[]
6dd74de435 }
6dd74de436 `,
6dd74de437 { logLevel: 1, htmlLabels: true }
6dd74de438 );
6dd74de439 });
6dd74de440
6dd74de441 it('12.1: should render a simple class diagram with generic types without htmlLabels', () => {
6dd74de442 imgSnapshotTest(
6dd74de443 `
6dd74de444 classDiagram
6dd74de445 class Class10~T~ {
6dd74de446 int[] id
6dd74de447 List~int~ ids
6dd74de448 test(List~int~ ids) List~bool~
6dd74de449 testArray() bool[]
6dd74de450 }
6dd74de451 `,
6dd74de452 { logLevel: 1, htmlLabels: false }
6dd74de453 );
6dd74de454 });
6dd74de455
6dd74de456 it('13: should render a simple class diagram with css classes applied', () => {
6dd74de457 imgSnapshotTest(
6dd74de458 `
6dd74de459 classDiagram
6dd74de460 class Class10 {
6dd74de461 int[] id
6dd74de462 List~int~ ids
6dd74de463 test(List~int~ ids) List~bool~
6dd74de464 testArray() bool[]
6dd74de465 }
6dd74de466
6dd74de467 cssClass "Class10" exClass2
6dd74de468 `,
6dd74de469 { logLevel: 1, htmlLabels: true }
6dd74de470 );
6dd74de471 });
6dd74de472
6dd74de473 it('14: should render a simple class diagram with css classes applied directly', () => {
6dd74de474 imgSnapshotTest(
6dd74de475 `
6dd74de476 classDiagram
6dd74de477 class Class10:::exClass2 {
6dd74de478 int[] id
6dd74de479 List~int~ ids
6dd74de480 test(List~int~ ids) List~bool~
6dd74de481 testArray() bool[]
6dd74de482 }
6dd74de483 `,
6dd74de484 { logLevel: 1, htmlLabels: true }
6dd74de485 );
6dd74de486 });
6dd74de487
6dd74de488 it('15: should render a simple class diagram with css classes applied two multiple classes', () => {
6dd74de489 imgSnapshotTest(
6dd74de490 `
6dd74de491 classDiagram
6dd74de492 class Class10
6dd74de493 class Class20
6dd74de494
6dd74de495 cssClass "Class10, class20" exClass2
6dd74de496 `,
6dd74de497 { logLevel: 1, htmlLabels: true }
6dd74de498 );
6dd74de499 });
6dd74de500
6dd74de501 it('16a: should render a simple class diagram with static field', () => {
6dd74de502 imgSnapshotTest(
6dd74de503 `
6dd74de504 classDiagram
6dd74de505 class Foo {
6dd74de506 +String bar$
6dd74de507 }
6dd74de508 `,
6dd74de509 { logLevel: 1, htmlLabels: true }
6dd74de510 );
6dd74de511 });
6dd74de512
6dd74de513 it('16b: should handle the direction statement with TB', () => {
6dd74de514 imgSnapshotTest(
6dd74de515 `
6dd74de516 classDiagram
6dd74de517 direction TB
6dd74de518 class Student {
6dd74de519 -idCard : IdCard
6dd74de520 }
6dd74de521 class IdCard{
6dd74de522 -id : int
6dd74de523 -name : string
6dd74de524 }
6dd74de525 class Bike{
6dd74de526 -id : int
6dd74de527 -name : string
6dd74de528 }
6dd74de529 Student "1" --o "1" IdCard : carries
6dd74de530 Student "1" --o "1" Bike : rides
6dd74de531
6dd74de532 `,
6dd74de533 { logLevel: 1, htmlLabels: true }
6dd74de534 );
6dd74de535 });
6dd74de536 it('17a: should handle the direction statement with BT', () => {
6dd74de537 imgSnapshotTest(
6dd74de538 `
6dd74de539 classDiagram
6dd74de540 direction BT
6dd74de541 class Student {
6dd74de542 -idCard : IdCard
6dd74de543 }
6dd74de544 class IdCard{
6dd74de545 -id : int
6dd74de546 -name : string
6dd74de547 }
6dd74de548 class Bike{
6dd74de549 -id : int
6dd74de550 -name : string
6dd74de551 }
6dd74de552 Student "1" --o "1" IdCard : carries
6dd74de553 Student "1" --o "1" Bike : rides
6dd74de554
6dd74de555 `,
6dd74de556 { logLevel: 1, htmlLabels: true }
6dd74de557 );
6dd74de558 });
6dd74de559 it('17b: should handle the direction statement with RL', () => {
6dd74de560 imgSnapshotTest(
6dd74de561 `
6dd74de562 classDiagram
6dd74de563 direction RL
6dd74de564 class Student {
6dd74de565 -idCard : IdCard
6dd74de566 }
6dd74de567 class IdCard{
6dd74de568 -id : int
6dd74de569 -name : string
6dd74de570 }
6dd74de571 class Bike{
6dd74de572 -id : int
6dd74de573 -name : string
6dd74de574 }
6dd74de575 Student "1" --o "1" IdCard : carries
6dd74de576 Student "1" --o "1" Bike : rides
6dd74de577
6dd74de578 `,
6dd74de579 { logLevel: 1, htmlLabels: true }
6dd74de580 );
6dd74de581 });
6dd74de582
6dd74de583 it('18a: should handle the direction statement with LR', () => {
6dd74de584 imgSnapshotTest(
6dd74de585 `
6dd74de586 classDiagram
6dd74de587 direction LR
6dd74de588 class Student {
6dd74de589 -idCard : IdCard
6dd74de590 }
6dd74de591 class IdCard{
6dd74de592 -id : int
6dd74de593 -name : string
6dd74de594 }
6dd74de595 class Bike{
6dd74de596 -id : int
6dd74de597 -name : string
6dd74de598 }
6dd74de599 Student "1" --o "1" IdCard : carries
6dd74de600 Student "1" --o "1" Bike : rides
6dd74de601
6dd74de602 `,
6dd74de603 { logLevel: 1, htmlLabels: true }
6dd74de604 );
6dd74de605 });
6dd74de606
6dd74de607 it('18b: should render a simple class diagram with notes', () => {
6dd74de608 imgSnapshotTest(
6dd74de609 `
6dd74de610 classDiagram
6dd74de611 note "I love this diagram!\nDo you love it?"
6dd74de612 class Class10 {
6dd74de613 int id
6dd74de614 size()
6dd74de615 }
6dd74de616 note for Class10 "Cool class\nI said it's very cool class!"
6dd74de617
6dd74de618 `,
6dd74de619 { logLevel: 1, htmlLabels: true }
6dd74de620 );
6dd74de621 });
6dd74de622
6dd74de623 it('1433: should render a simple class with a title', () => {
6dd74de624 imgSnapshotTest(
6dd74de625 `---
6dd74de626title: simple class diagram
6dd74de627---
6dd74de628classDiagram
6dd74de629class Class10
6dd74de630`
6dd74de631 );
6dd74de632 });
6dd74de633
6dd74de634 it('should render a class with text label', () => {
6dd74de635 imgSnapshotTest(
6dd74de636 `classDiagram
6dd74de637 class C1["Class 1 with text label"]
6dd74de638 C1 --> C2`
6dd74de639 );
6dd74de640 });
6dd74de641
6dd74de642 it('should render two classes with text labels', () => {
6dd74de643 imgSnapshotTest(
6dd74de644 `classDiagram
6dd74de645 class C1["Class 1 with text label"]
6dd74de646 class C2["Class 2 with chars @?"]
6dd74de647 C1 --> C2`
6dd74de648 );
6dd74de649 });
6dd74de650 it('should render a class with a text label, members and annotation', () => {
6dd74de651 imgSnapshotTest(
6dd74de652 `classDiagram
6dd74de653 class C1["Class 1 with text label"] {
6dd74de654 &lt;&lt;interface&gt;&gt;
6dd74de655 +member1
6dd74de656 }
6dd74de657 C1 --> C2`
6dd74de658 );
6dd74de659 });
6dd74de660 it('should render multiple classes with same text labels', () => {
6dd74de661 imgSnapshotTest(
6dd74de662 `classDiagram
6dd74de663class C1["Class with text label"]
6dd74de664class C2["Class with text label"]
6dd74de665class C3["Class with text label"]
6dd74de666C1 --> C2
6dd74de667C3 ..> C2
6dd74de668 `
6dd74de669 );
6dd74de670 });
6dd74de671 it('should render classes with different text labels', () => {
6dd74de672 imgSnapshotTest(
6dd74de673 `classDiagram
6dd74de674class C1["OneWord"]
6dd74de675class C2["With, Comma"]
6dd74de676class C3["With (Brackets)"]
6dd74de677class C4["With [Brackets]"]
6dd74de678class C5["With {Brackets}"]
6dd74de679class C7["With 1 number"]
6dd74de680class C8["With . period..."]
6dd74de681class C9["With - dash"]
6dd74de682class C10["With _ underscore"]
6dd74de683class C11["With ' single quote"]
6dd74de684class C12["With ~!@#$%^&*()_+=-/?"]
6dd74de685class C13["With Città foreign language"]
6dd74de686 `
6dd74de687 );
6dd74de688 });
6dd74de689
6dd74de690 it('should render classLabel if class has already been defined earlier', () => {
6dd74de691 imgSnapshotTest(
6dd74de692 `classDiagram
6dd74de693 Animal <|-- Duck
6dd74de694 class Duck["Duck with text label"]
6dd74de695`
6dd74de696 );
6dd74de697 });
6dd74de698 it('should add classes namespaces', function () {
6dd74de699 imgSnapshotTest(
6dd74de700 `
6dd74de701 classDiagram
6dd74de702 namespace Namespace1 {
6dd74de703 class C1
6dd74de704 class C2
6dd74de705 }
6dd74de706 C1 --> C2
6dd74de707 class C3
6dd74de708 class C4
6dd74de709 `
6dd74de710 );
6dd74de711 });
6dd74de712 it('should add notes in namespaces', function () {
6dd74de713 imgSnapshotTest(
6dd74de714 `
6dd74de715 classDiagram
6dd74de716 note "This is a outer note"
6dd74de717 note for C1 "This is a outer note for C1"
6dd74de718 namespace Namespace1 {
6dd74de719 note "This is a inner note"
6dd74de720 note for C1 "This is a inner note for C1"
6dd74de721 class C1
6dd74de722 }
6dd74de723 `
6dd74de724 );
6dd74de725 });
6dd74de726 it('should render a simple class diagram with no members', () => {
6dd74de727 imgSnapshotTest(
6dd74de728 `
6dd74de729 classDiagram
6dd74de730 class Class10
6dd74de731 `,
6dd74de732 { logLevel: 1, htmlLabels: true }
6dd74de733 );
6dd74de734 });
6dd74de735 it('should render a simple class diagram with no members if hideEmptyMembersBox is enabled', () => {
6dd74de736 imgSnapshotTest(
6dd74de737 `
6dd74de738 classDiagram
6dd74de739 class Class10
6dd74de740 `,
6dd74de741 { logLevel: 1, class: { htmlLabels: true, hideEmptyMembersBox: true } }
6dd74de742 );
6dd74de743 });
6dd74de744 it('should render a simple class diagram with no attributes, only methods', () => {
6dd74de745 imgSnapshotTest(
6dd74de746 `
6dd74de747 classDiagram
6dd74de748 class Duck {
6dd74de749 +swim()
6dd74de750 +quack()
6dd74de751 }
6dd74de752 `
6dd74de753 );
6dd74de754 });
6dd74de755 it('should render a simple class diagram with no methods, only attributes', () => {
6dd74de756 imgSnapshotTest(
6dd74de757 `
6dd74de758 classDiagram
6dd74de759 class Duck {
6dd74de760 +String beakColor
6dd74de761 +int age
6dd74de762 +float weight
6dd74de763 }
6dd74de764 `
6dd74de765 );
6dd74de766 });
6dd74de767 it('should render a simple class diagram with style definition', () => {
6dd74de768 imgSnapshotTest(
6dd74de769 `
6dd74de770 classDiagram
6dd74de771 class Class10
6dd74de772 style Class10 fill:#f9f,stroke:#333,stroke-width:4px
6dd74de773 `,
6dd74de774 { logLevel: 1, htmlLabels: true }
6dd74de775 );
6dd74de776 });
6dd74de777 it('should render a simple class diagram with style definition without htmlLabels', () => {
6dd74de778 imgSnapshotTest(
6dd74de779 `
6dd74de780 classDiagram
6dd74de781 class Class10
6dd74de782 style Class10 fill:#f9f,stroke:#333,stroke-width:4px
6dd74de783 `,
6dd74de784 { logLevel: 1, htmlLabels: false }
6dd74de785 );
6dd74de786 });
6dd74de787 it('should render a simple class diagram with classDef definitions', () => {
6dd74de788 imgSnapshotTest(
6dd74de789 `
6dd74de790 classDiagram
6dd74de791 class Class10
6dd74de792 classDef pink fill:#f9f
6dd74de793 classDef bold stroke:#333,stroke-width:6px,color:#fff
6dd74de794 `,
6dd74de795 { logLevel: 1, htmlLabels: true }
6dd74de796 );
6dd74de797 });
6dd74de798 it('should render a simple class diagram with classDefs being applied', () => {
6dd74de799 imgSnapshotTest(
6dd74de800 `
6dd74de801 classDiagram
6dd74de802 class Class10:::pink
6dd74de803 cssClass "Class10" bold
6dd74de804 classDef pink fill:#f9f
6dd74de805 classDef bold stroke:#333,stroke-width:6px,color:#fff
6dd74de806 `,
6dd74de807 { logLevel: 1, htmlLabels: true }
6dd74de808 );
6dd74de809 });
6dd74de810 it('should render a simple class diagram with classDefs being applied without htmlLabels', () => {
6dd74de811 imgSnapshotTest(
6dd74de812 `
6dd74de813 classDiagram
6dd74de814 class Class10:::pink
6dd74de815 cssClass "Class10" bold
6dd74de816 classDef pink fill:#f9f
6dd74de817 classDef bold stroke:#333,stroke-width:6px,color:#fff
6dd74de818 `,
6dd74de819 { logLevel: 1, htmlLabels: false }
6dd74de820 );
6dd74de821 });
6dd74de822 it('should render a simple class diagram with markdown styling', () => {
6dd74de823 imgSnapshotTest(
6dd74de824 `
6dd74de825 classDiagram
6dd74de826 class Class10 {
6dd74de827 +attribute *italic**
6dd74de828 ~attribute **bold***
6dd74de829 _italicmethod_()
6dd74de830 __boldmethod__()
6dd74de831 _+_swim_()a_
6dd74de832 __+quack() test__
6dd74de833 }
6dd74de834 `,
6dd74de835 { logLevel: 1, htmlLabels: true }
6dd74de836 );
6dd74de837 });
6dd74de838 it('should render a simple class diagram with markdown styling without htmlLabels', () => {
6dd74de839 imgSnapshotTest(
6dd74de840 `
6dd74de841 classDiagram
6dd74de842 class Class10 {
6dd74de843 +attribute *italic**
6dd74de844 ~attribute **bold***
6dd74de845 _italicmethod_()
6dd74de846 __boldmethod__()
6dd74de847 _+_swim_()a_
6dd74de848 __+quack() test__
6dd74de849 }
6dd74de850 `,
6dd74de851 { logLevel: 1, htmlLabels: false }
6dd74de852 );
6dd74de853 });
6dd74de854 it('should render a simple class diagram with the handDrawn look', () => {
6dd74de855 imgSnapshotTest(
6dd74de856 `
6dd74de857 classDiagram
6dd74de858 class Class10
6dd74de859 `,
6dd74de860 { logLevel: 1, htmlLabels: true, look: 'handDrawn' }
6dd74de861 );
6dd74de862 });
6dd74de863 it('should render a simple class diagram with styles and the handDrawn look', () => {
6dd74de864 imgSnapshotTest(
6dd74de865 `
6dd74de866 classDiagram
6dd74de867 class Class10
6dd74de868 style Class10 fill:#f9f,stroke:#333,stroke-width:4px,color:white
6dd74de869 `,
6dd74de870 { logLevel: 1, htmlLabels: true, look: 'handDrawn' }
6dd74de871 );
6dd74de872 });
6dd74de873 it('should render a simple class diagram with styles and the handDrawn look without htmlLabels', () => {
6dd74de874 imgSnapshotTest(
6dd74de875 `
6dd74de876 classDiagram
6dd74de877 class Class10
6dd74de878 style Class10 fill:#f9f,stroke:#333,stroke-width:4px,color:white
6dd74de879 `,
6dd74de880 { logLevel: 1, htmlLabels: false, look: 'handDrawn' }
6dd74de881 );
6dd74de882 });
6dd74de883 it('should render a full class diagram with the handDrawn look', () => {
6dd74de884 imgSnapshotTest(
6dd74de885 `
6dd74de886 classDiagram
6dd74de887 note "I love this diagram!\nDo you love it?"
6dd74de888 Class01 <|-- AveryLongClass : Cool
6dd74de889 &lt;&lt;interface&gt;&gt; Class01
6dd74de890 Class03 "1" *-- "*" Class04
6dd74de891 Class05 "1" o-- "many" Class06
6dd74de892 Class07 "1" .. "*" Class08
6dd74de893 Class09 "1" --> "*" C2 : Where am i?
6dd74de894 Class09 "*" --* "*" C3
6dd74de895 Class09 "1" --|> "1" Class07
6dd74de896 Class12 <|.. Class08
6dd74de897 Class11 ..>Class12
6dd74de898 Class07 : equals()
6dd74de899 Class07 : Object[] elementData
6dd74de900 Class01 : size()
6dd74de901 Class01 : int chimp
6dd74de902 Class01 : int gorilla
6dd74de903 Class01 : -int privateChimp
6dd74de904 Class01 : +int publicGorilla
6dd74de905 Class01 : #int protectedMarmoset
6dd74de906 Class08 <--> C2: Cool label
6dd74de907 class Class10 {
6dd74de908 &lt;&lt;service&gt;&gt;
6dd74de909 int id
6dd74de910 test()
6dd74de911 }
6dd74de912 note for Class10 "Cool class\nI said it's very cool class!"
6dd74de913 `,
6dd74de914 { logLevel: 1, htmlLabels: true, look: 'handDrawn' }
6dd74de915 );
6dd74de916 });
6dd74de917 it('should render a simple class diagram with a custom theme', () => {
6dd74de918 imgSnapshotTest(
6dd74de919 `
6dd74de920 %%{
6dd74de921 init: {
6dd74de922 'theme': 'base',
6dd74de923 'themeVariables': {
6dd74de924 'primaryColor': '#BB2528',
6dd74de925 'primaryTextColor': '#fff',
6dd74de926 'primaryBorderColor': '#7C0000',
6dd74de927 'lineColor': '#F83d29',
6dd74de928 'secondaryColor': '#006100',
6dd74de929 'tertiaryColor': '#fff'
6dd74de930 }
6dd74de931 }
6dd74de932 }%%
6dd74de933 classDiagram
6dd74de934 Class01 <|-- AveryLongClass : Cool
6dd74de935 &lt;&lt;interface&gt;&gt; Class01
6dd74de936 Class03 *-- Class04
6dd74de937 Class05 o-- Class06
6dd74de938 Class07 .. Class08
6dd74de939 Class09 --> C2 : Where am i?
6dd74de940 Class09 --* C3
6dd74de941 Class09 --|> Class07
6dd74de942 Class12 <|.. Class08
6dd74de943 Class11 ..>Class12
6dd74de944 Class07 : equals()
6dd74de945 Class07 : Object[] elementData
6dd74de946 Class01 : size()
6dd74de947 Class01 : int chimp
6dd74de948 Class01 : int gorilla
6dd74de949 Class01 : -int privateChimp
6dd74de950 Class01 : +int publicGorilla
6dd74de951 Class01 : #int protectedMarmoset
6dd74de952 Class08 <--> C2: Cool label
6dd74de953 class Class10 {
6dd74de954 &lt;&lt;service&gt;&gt;
6dd74de955 int id
6dd74de956 test()
6dd74de957 }
6dd74de958 `,
6dd74de959 { logLevel: 1, htmlLabels: true }
6dd74de960 );
6dd74de961 });
6dd74de962 it('should render a simple class diagram with a custom theme and the handDrawn look', () => {
6dd74de963 imgSnapshotTest(
6dd74de964 `
6dd74de965 %%{
6dd74de966 init: {
6dd74de967 'theme': 'base',
6dd74de968 'themeVariables': {
6dd74de969 'primaryColor': '#BB2528',
6dd74de970 'primaryTextColor': '#fff',
6dd74de971 'primaryBorderColor': '#7C0000',
6dd74de972 'lineColor': '#F83d29',
6dd74de973 'secondaryColor': '#006100',
6dd74de974 'tertiaryColor': '#fff'
6dd74de975 }
6dd74de976 }
6dd74de977 }%%
6dd74de978 classDiagram
6dd74de979 Class01 <|-- AveryLongClass : Cool
6dd74de980 &lt;&lt;interface&gt;&gt; Class01
6dd74de981 Class03 *-- Class04
6dd74de982 Class05 o-- Class06
6dd74de983 Class07 .. Class08
6dd74de984 Class09 --> C2 : Where am i?
6dd74de985 Class09 --* C3
6dd74de986 Class09 --|> Class07
6dd74de987 Class12 <|.. Class08
6dd74de988 Class11 ..>Class12
6dd74de989 Class07 : equals()
6dd74de990 Class07 : Object[] elementData
6dd74de991 Class01 : size()
6dd74de992 Class01 : int chimp
6dd74de993 Class01 : int gorilla
6dd74de994 Class01 : -int privateChimp
6dd74de995 Class01 : +int publicGorilla
6dd74de996 Class01 : #int protectedMarmoset
6dd74de997 Class08 <--> C2: Cool label
6dd74de998 class Class10 {
6dd74de999 &lt;&lt;service&gt;&gt;
6dd74de1000 int id
6dd74de1001 test()
6dd74de1002 }
6dd74de1003 `,
6dd74de1004 { logLevel: 1, htmlLabels: true, look: 'handDrawn' }
6dd74de1005 );
6dd74de1006 });
6dd74de1007 it('should render a full class diagram using elk', () => {
6dd74de1008 imgSnapshotTest(
6dd74de1009 `
6dd74de1010---
6dd74de1011 config:
6dd74de1012 layout: elk
6dd74de1013---
6dd74de1014 classDiagram
6dd74de1015 note "I love this diagram!\nDo you love it?"
6dd74de1016 Class01 <|-- AveryLongClass : Cool
6dd74de1017 &lt;&lt;interface&gt;&gt; Class01
6dd74de1018 Class03 "1" *-- "*" Class04
6dd74de1019 Class05 "1" o-- "many" Class06
6dd74de1020 Class07 "1" .. "*" Class08
6dd74de1021 Class09 "1" --> "*" C2 : Where am i?
6dd74de1022 Class09 "*" --* "*" C3
6dd74de1023 Class09 "1" --|> "1" Class07
6dd74de1024 Class12 <|.. Class08
6dd74de1025 Class11 ..>Class12
6dd74de1026 Class07 : equals()
6dd74de1027 Class07 : Object[] elementData
6dd74de1028 Class01 : size()
6dd74de1029 Class01 : int chimp
6dd74de1030 Class01 : int gorilla
6dd74de1031 Class01 : -int privateChimp
6dd74de1032 Class01 : +int publicGorilla
6dd74de1033 Class01 : #int protectedMarmoset
6dd74de1034 Class08 <--> C2: Cool label
6dd74de1035 class Class10 {
6dd74de1036 &lt;&lt;service&gt;&gt;
6dd74de1037 int id
6dd74de1038 test()
6dd74de1039 }
6dd74de1040 note for Class10 "Cool class\nI said it's very cool class!"
6dd74de1041 `,
6dd74de1042 { logLevel: 1, htmlLabels: true }
6dd74de1043 );
6dd74de1044 });
6dd74de1045});