mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
1038 lines
27 KiB
JavaScript
1038 lines
27 KiB
JavaScript
import { imgSnapshotTest } from '../../helpers/util.ts';
|
|
describe('Class diagram V3 ELK', () => {
|
|
it('ELK-0: should render a simple class diagram', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
|
|
classA -- classB : Inheritance
|
|
classA -- classC : link
|
|
classC -- classD : link
|
|
classB -- classD
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-1: should render a simple class diagram', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 *-- Class04
|
|
Class05 o-- Class06
|
|
Class07 .. Class08
|
|
Class09 --> C2 : Where am i?
|
|
Class09 --* C3
|
|
Class09 --|> Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-1.1: should render a simple class diagram without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 *-- Class04
|
|
Class05 o-- Class06
|
|
Class07 .. Class08
|
|
Class09 --> C2 : Where am i?
|
|
Class09 --* C3
|
|
Class09 --|> Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-2: should render a simple class diagrams with cardinality', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 "1" <--> "*" C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-2.1: should render a simple class diagrams with cardinality without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 "1" <--> "*" C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-2.2 should render a simple class diagram with different visibilities', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class01 : -privateMethod()
|
|
Class01 : +publicMethod()
|
|
Class01 : #protectedMethod()
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK-2.3 should render a simple class diagram with different visibilities without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class01 : -privateMethod()
|
|
Class01 : +publicMethod()
|
|
Class01 : #protectedMethod()
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-3: should render multiple class diagrams', () => {
|
|
imgSnapshotTest(
|
|
[
|
|
`
|
|
classDiagram
|
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 "1" <--> "*" C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
`
|
|
classDiagram
|
|
Class01 "1" <|--|> "*" AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 "1" <--> "*" C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
],
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-4: should render a simple class diagram with comments', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
%% this is a comment
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 *-- Class04
|
|
Class05 o-- Class06
|
|
Class07 .. Class08
|
|
Class09 --> C2 : Where am i?
|
|
Class09 --* C3
|
|
Class09 --|> Class07
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-5: should render a simple class diagram with abstract method', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
Class01 : someMethod()*
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-5.1: should render a simple class diagram with abstract method without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
Class01 : someMethod()*
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-6: should render a simple class diagram with static method', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
Class01 : someMethod()$
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-6.1: should render a simple class diagram with static method without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
Class01 : someMethod()$
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-7: should render a simple class diagram with Generic class', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class01~T~
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10~T~ {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-7.1: should render a simple class diagram with Generic class without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class01~T~
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10~T~ {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-8: should render a simple class diagram with Generic class and relations', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01~T~ <|-- AveryLongClass : Cool
|
|
Class03~T~ *-- Class04~T~
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10~T~ {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-9: should render a simple class diagram with clickable link', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01~T~ <|-- AveryLongClass : Cool
|
|
Class03~T~ *-- Class04~T~
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10~T~ {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
link Class01 "google.com" "A Tooltip"
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-10: should render a simple class diagram with clickable callback', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
Class01~T~ <|-- AveryLongClass : Cool
|
|
Class03~T~ *-- Class04~T~
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class08 <--> C2: Cool label
|
|
class Class10~T~ {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
callback Class01 "functionCall" "A Tooltip"
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-11: should render a simple class diagram with return type on method', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10~T~ {
|
|
int[] id
|
|
test(int[] ids) bool
|
|
testArray() bool[]
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-11.1: should render a simple class diagram with return type on method without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10~T~ {
|
|
int[] id
|
|
test(int[] ids) bool
|
|
testArray() bool[]
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-12: should render a simple class diagram with generic types', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10~T~ {
|
|
int[] id
|
|
List~int~ ids
|
|
test(List~int~ ids) List~bool~
|
|
testArray() bool[]
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-12.1: should render a simple class diagram with generic types without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10~T~ {
|
|
int[] id
|
|
List~int~ ids
|
|
test(List~int~ ids) List~bool~
|
|
testArray() bool[]
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-13: should render a simple class diagram with css classes applied', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10 {
|
|
int[] id
|
|
List~int~ ids
|
|
test(List~int~ ids) List~bool~
|
|
testArray() bool[]
|
|
}
|
|
|
|
cssClass "Class10" exClass2
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-14: should render a simple class diagram with css classes applied directly', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10:::exClass2 {
|
|
int[] id
|
|
List~int~ ids
|
|
test(List~int~ ids) List~bool~
|
|
testArray() bool[]
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-15: should render a simple class diagram with css classes applied two multiple classes', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
class Class20
|
|
|
|
cssClass "Class10, class20" exClass2
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-16a: should render a simple class diagram with static field', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Foo {
|
|
+String bar$
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-16b: should handle the direction statement with TB', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
direction TB
|
|
class Student {
|
|
-idCard : IdCard
|
|
}
|
|
class IdCard{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
class Bike{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
Student "1" --o "1" IdCard : carries
|
|
Student "1" --o "1" Bike : rides
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK-17a: should handle the direction statement with BT', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
direction BT
|
|
class Student {
|
|
-idCard : IdCard
|
|
}
|
|
class IdCard{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
class Bike{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
Student "1" --o "1" IdCard : carries
|
|
Student "1" --o "1" Bike : rides
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK-17b: should handle the direction statement with RL', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
direction RL
|
|
class Student {
|
|
-idCard : IdCard
|
|
}
|
|
class IdCard{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
class Bike{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
Student "1" --o "1" IdCard : carries
|
|
Student "1" --o "1" Bike : rides
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-18a: should handle the direction statement with LR', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
direction LR
|
|
class Student {
|
|
-idCard : IdCard
|
|
}
|
|
class IdCard{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
class Bike{
|
|
-id : int
|
|
-name : string
|
|
}
|
|
Student "1" --o "1" IdCard : carries
|
|
Student "1" --o "1" Bike : rides
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-18b: should render a simple class diagram with notes', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
note "I love this diagram!\nDo you love it?"
|
|
class Class10 {
|
|
int id
|
|
size()
|
|
}
|
|
note for Class10 "Cool class\nI said it's very cool class!"
|
|
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK-1433: should render a simple class with a title', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
title: simple class diagram
|
|
---
|
|
classDiagram
|
|
class Class10
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK: should render a class with text label', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
class C1["Class 1 with text label"]
|
|
C1 --> C2`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK: should render two classes with text labels', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
class C1["Class 1 with text label"]
|
|
class C2["Class 2 with chars @?"]
|
|
C1 --> C2`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a class with a text label, members and annotation', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
class C1["Class 1 with text label"] {
|
|
<<interface>>
|
|
+member1
|
|
}
|
|
C1 --> C2`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render multiple classes with same text labels', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
class C1["Class with text label"]
|
|
class C2["Class with text label"]
|
|
class C3["Class with text label"]
|
|
C1 --> C2
|
|
C3 ..> C2
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render classes with different text labels', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
class C1["OneWord"]
|
|
class C2["With, Comma"]
|
|
class C3["With (Brackets)"]
|
|
class C4["With [Brackets]"]
|
|
class C5["With {Brackets}"]
|
|
class C7["With 1 number"]
|
|
class C8["With . period..."]
|
|
class C9["With - dash"]
|
|
class C10["With _ underscore"]
|
|
class C11["With ' single quote"]
|
|
class C12["With ~!@#$%^&*()_+=-/?"]
|
|
class C13["With Città foreign language"]
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
|
|
it('ELK: should render classLabel if class has already been defined earlier', () => {
|
|
imgSnapshotTest(
|
|
`classDiagram
|
|
Animal <|-- Duck
|
|
class Duck["Duck with text label"]
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should add classes namespaces', function () {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
namespace Namespace1 {
|
|
class C1
|
|
class C2
|
|
}
|
|
C1 --> C2
|
|
class C3
|
|
class C4
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with no members', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with no members if hideEmptyMembersBox is enabled', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
`,
|
|
{ logLevel: 1, class: { htmlLabels: true, hideEmptyMembersBox: true }, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with no attributes, only methods', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Duck {
|
|
+swim()
|
|
+quack()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with no methods, only attributes', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Duck {
|
|
+String beakColor
|
|
+int age
|
|
+float weight
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with style definition', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
style Class10 fill:#f9f,stroke:#333,stroke-width:4px
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with style definition without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
style Class10 fill:#f9f,stroke:#333,stroke-width:4px
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with classDef definitions', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
classDef pink fill:#f9f
|
|
classDef bold stroke:#333,stroke-width:6px,color:#fff
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with classDefs being applied', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10:::pink
|
|
cssClass "Class10" bold
|
|
classDef pink fill:#f9f
|
|
classDef bold stroke:#333,stroke-width:6px,color:#fff
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with classDefs being applied without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10:::pink
|
|
cssClass "Class10" bold
|
|
classDef pink fill:#f9f
|
|
classDef bold stroke:#333,stroke-width:6px,color:#fff
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with markdown styling', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10 {
|
|
+attribute *italic**
|
|
~attribute **bold***
|
|
_italicmethod_()
|
|
__boldmethod__()
|
|
_+_swim_()a_
|
|
__+quack() test__
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with markdown styling without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10 {
|
|
+attribute *italic**
|
|
~attribute **bold***
|
|
_italicmethod_()
|
|
__boldmethod__()
|
|
_+_swim_()a_
|
|
__+quack() test__
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with the handDrawn look', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, look: 'handDrawn', layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with styles and the handDrawn look', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
style Class10 fill:#f9f,stroke:#333,stroke-width:4px,color:white
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, look: 'handDrawn', layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with styles and the handDrawn look without htmlLabels', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
class Class10
|
|
style Class10 fill:#f9f,stroke:#333,stroke-width:4px,color:white
|
|
`,
|
|
{ logLevel: 1, htmlLabels: false, look: 'handDrawn', layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a full class diagram with the handDrawn look', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
note "I love this diagram!\nDo you love it?"
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
note for Class10 "Cool class\nI said it's very cool class!"
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, look: 'handDrawn', layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with a custom theme', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
%%{
|
|
init: {
|
|
'theme': 'base',
|
|
'themeVariables': {
|
|
'primaryColor': '#BB2528',
|
|
'primaryTextColor': '#fff',
|
|
'primaryBorderColor': '#7C0000',
|
|
'lineColor': '#F83d29',
|
|
'secondaryColor': '#006100',
|
|
'tertiaryColor': '#fff'
|
|
}
|
|
}
|
|
}%%
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 *-- Class04
|
|
Class05 o-- Class06
|
|
Class07 .. Class08
|
|
Class09 --> C2 : Where am i?
|
|
Class09 --* C3
|
|
Class09 --|> Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a simple class diagram with a custom theme and the handDrawn look', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
%%{
|
|
init: {
|
|
'theme': 'base',
|
|
'themeVariables': {
|
|
'primaryColor': '#BB2528',
|
|
'primaryTextColor': '#fff',
|
|
'primaryBorderColor': '#7C0000',
|
|
'lineColor': '#F83d29',
|
|
'secondaryColor': '#006100',
|
|
'tertiaryColor': '#fff'
|
|
}
|
|
}
|
|
}%%
|
|
classDiagram
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 *-- Class04
|
|
Class05 o-- Class06
|
|
Class07 .. Class08
|
|
Class09 --> C2 : Where am i?
|
|
Class09 --* C3
|
|
Class09 --|> Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, look: 'handDrawn', layout: 'elk' }
|
|
);
|
|
});
|
|
it('ELK: should render a full class diagram using elk', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
classDiagram
|
|
note "I love this diagram!\nDo you love it?"
|
|
Class01 <|-- AveryLongClass : Cool
|
|
<<interface>> Class01
|
|
Class03 "1" *-- "*" Class04
|
|
Class05 "1" o-- "many" Class06
|
|
Class07 "1" .. "*" Class08
|
|
Class09 "1" --> "*" C2 : Where am i?
|
|
Class09 "*" --* "*" C3
|
|
Class09 "1" --|> "1" Class07
|
|
Class12 <|.. Class08
|
|
Class11 ..>Class12
|
|
Class07 : equals()
|
|
Class07 : Object[] elementData
|
|
Class01 : size()
|
|
Class01 : int chimp
|
|
Class01 : int gorilla
|
|
Class01 : -int privateChimp
|
|
Class01 : +int publicGorilla
|
|
Class01 : #int protectedMarmoset
|
|
Class08 <--> C2: Cool label
|
|
class Class10 {
|
|
<<service>>
|
|
int id
|
|
test()
|
|
}
|
|
note for Class10 "Cool class\nI said it's very cool class!"
|
|
`,
|
|
{ logLevel: 1, htmlLabels: true, layout: 'elk' }
|
|
);
|
|
});
|
|
});
|