2022-10-02 15:21:24 +13:00
|
|
|
defmodule Ash.Test.Api.Info.DiagramTest do
|
|
|
|
@moduledoc false
|
|
|
|
use ExUnit.Case, async: true
|
|
|
|
|
|
|
|
test "generate a mermaid entity relationship diagram from an Api" do
|
2022-10-07 10:04:02 +13:00
|
|
|
assert Ash.Api.Info.Diagram.mermaid_er_diagram(Ash.Test.Flow.Api) == """
|
2022-10-02 15:21:24 +13:00
|
|
|
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 an Api" do
|
2022-10-07 10:04:02 +13:00
|
|
|
assert Ash.Api.Info.Diagram.mermaid_class_diagram(Ash.Test.Flow.Api) == """
|
2022-10-02 15:21:24 +13:00
|
|
|
classDiagram
|
|
|
|
class User {
|
|
|
|
UUID id
|
|
|
|
String first_name
|
|
|
|
String last_name
|
|
|
|
String email
|
|
|
|
Org org
|
2022-10-06 19:04:21 +13:00
|
|
|
destroy(UUID id, String first_name, String last_name, String email)
|
2022-10-02 15:21:24 +13:00
|
|
|
read()
|
2022-10-06 19:04:21 +13:00
|
|
|
for_org(UUID org)
|
|
|
|
create(UUID org, UUID id, String first_name, String last_name, ...)
|
|
|
|
update(UUID id, String first_name, String last_name, String email)
|
2022-10-02 15:21:24 +13:00
|
|
|
approve()
|
|
|
|
unapprove()
|
|
|
|
}
|
|
|
|
class Org {
|
|
|
|
UUID id
|
|
|
|
String name
|
|
|
|
User[] users
|
2022-10-06 19:04:21 +13:00
|
|
|
destroy(UUID id, String name)
|
|
|
|
update(UUID id, String name)
|
2022-10-02 15:21:24 +13:00
|
|
|
read()
|
2022-10-06 19:04:21 +13:00
|
|
|
create(UUID id, String name)
|
|
|
|
by_name(String name)
|
2022-10-02 15:21:24 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
Org -- User
|
|
|
|
"""
|
|
|
|
end
|
2022-10-04 04:30:10 +13:00
|
|
|
|
|
|
|
test "include private fields in a mermaid entity relationship diagram from an Api if specified" do
|
2022-10-07 10:04:02 +13:00
|
|
|
assert Ash.Api.Info.Diagram.mermaid_er_diagram(Ash.Test.Flow.Api, show_private?: true) ==
|
2022-10-04 04:30:10 +13:00
|
|
|
"""
|
|
|
|
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 private fields in a mermaid class diagram from an Api if specified" do
|
2022-10-07 10:04:02 +13:00
|
|
|
assert Ash.Api.Info.Diagram.mermaid_class_diagram(Ash.Test.Flow.Api,
|
2022-10-04 04:30:10 +13:00
|
|
|
show_private?: true
|
|
|
|
) == """
|
|
|
|
classDiagram
|
|
|
|
class User {
|
|
|
|
UUID id
|
|
|
|
String first_name
|
|
|
|
String last_name
|
|
|
|
String email
|
|
|
|
Boolean approved
|
|
|
|
UUID org_id
|
|
|
|
Org org
|
2022-10-06 19:04:21 +13:00
|
|
|
destroy(UUID id, String first_name, String last_name, String email)
|
2022-10-04 04:30:10 +13:00
|
|
|
read()
|
2022-10-06 19:04:21 +13:00
|
|
|
for_org(UUID org)
|
|
|
|
create(UUID org, UUID id, String first_name, String last_name, ...)
|
|
|
|
update(UUID id, String first_name, String last_name, String email)
|
2022-10-04 04:30:10 +13:00
|
|
|
approve()
|
|
|
|
unapprove()
|
|
|
|
}
|
|
|
|
class Org {
|
|
|
|
UUID id
|
|
|
|
String name
|
|
|
|
User[] users
|
2022-10-06 19:04:21 +13:00
|
|
|
destroy(UUID id, String name)
|
|
|
|
update(UUID id, String name)
|
2022-10-04 04:30:10 +13:00
|
|
|
read()
|
2022-10-06 19:04:21 +13:00
|
|
|
create(UUID id, String name)
|
|
|
|
by_name(String name)
|
2022-10-04 04:30:10 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
Org -- User
|
|
|
|
"""
|
|
|
|
end
|
2022-10-02 15:21:24 +13:00
|
|
|
end
|