forked from ash-project/ash
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiagram_test.exs
More file actions
132 lines (122 loc) · 4.13 KB
/
diagram_test.exs
File metadata and controls
132 lines (122 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
defmodule Ash.Test.Domain.Info.DiagramTest do
@moduledoc false
use ExUnit.Case, async: true
test "generate a mermaid entity relationship diagram from a domain" do
assert Ash.Domain.Info.Diagram.mermaid_er_diagram(Ash.Test.Flow.Domain) == """
erDiagram
"User" {
UUID id
String first_name
String last_name
String email
}
"Org" {
UUID id
String name
}
"Org" ||--|| "User" : ""
"""
end
test "generate a mermaid class diagram from a domain" do
assert Ash.Domain.Info.Diagram.mermaid_class_diagram(Ash.Test.Flow.Domain) == """
classDiagram
class User {
UUID id
String first_name
String last_name
String email
Org org
destroy()
read()
for_org(UUID org)
by_name(String name)
create(UUID org, String first_name, String last_name, String email)
update(String first_name, String last_name, String email)
approve()
unapprove()
}
class Org {
UUID id
String name
User[] users
update(String name)
create(String name)
destroy()
read()
by_name(String name)
}
Org -- User
"""
end
test "include private fields in a mermaid entity relationship diagram from a domain if specified" do
assert Ash.Domain.Info.Diagram.mermaid_er_diagram(Ash.Test.Flow.Domain, show_private?: true) ==
"""
erDiagram
"User" {
UUID id
String first_name
String last_name
String email
Boolean approved
UUID org_id
}
"Org" {
UUID id
String name
}
"Org" ||--|| "User" : ""
"""
end
test "include long names in mermaid entity relationship diagram if specified" do
assert Ash.Domain.Info.Diagram.mermaid_er_diagram([Ash.Test.Flow.Domain], name: :full) ==
"""
erDiagram
"Ash.Test.Flow.User" {
UUID id
String first_name
String last_name
String email
}
"Ash.Test.Flow.Org" {
UUID id
String name
}
"Ash.Test.Flow.Org" ||--|| "Ash.Test.Flow.User" : ""
"""
end
test "include private fields in a mermaid class diagram from a domain if specified" do
assert Ash.Domain.Info.Diagram.mermaid_class_diagram(Ash.Test.Flow.Domain,
show_private?: true
) == """
classDiagram
class User {
UUID id
String first_name
String last_name
String email
Boolean approved
UUID org_id
Org org
destroy()
read()
for_org(UUID org)
by_name(String name)
create(UUID org, String first_name, String last_name, String email)
update(String first_name, String last_name, String email)
approve()
unapprove()
}
class Org {
UUID id
String name
User[] users
update(String name)
create(String name)
destroy()
read()
by_name(String name)
}
Org -- User
"""
end
end