mirror of https://github.com/mingrammer/diagrams
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
2 years ago
|
import os
|
||
|
import random
|
||
|
import string
|
||
|
import unittest
|
||
|
|
||
|
from diagrams import Diagram
|
||
|
from diagrams import setcluster, setdiagram
|
||
|
from diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationship
|
||
|
|
||
|
|
||
|
class C4Test(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
self.name = "diagram-" + "".join([random.choice(string.hexdigits) for n in range(7)])
|
||
|
|
||
|
def tearDown(self):
|
||
|
setdiagram(None)
|
||
|
setcluster(None)
|
||
|
try:
|
||
|
os.remove(self.name + ".png")
|
||
|
except FileNotFoundError:
|
||
|
pass
|
||
|
|
||
|
def test_nodes(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
person = Person("person", "A person.")
|
||
|
container = Container("container", "Java application", "The application.")
|
||
|
database = Database("database", "Oracle database", "Stores information.")
|
||
|
|
||
|
def test_external_nodes(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
external_person = Person("person", external=True)
|
||
|
external_system = System("external", external=True)
|
||
|
|
||
|
def test_systems(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
system = System("system", "The internal system.")
|
||
|
system_without_description = System("unknown")
|
||
|
|
||
|
def test_edges(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
c1 = Container("container1")
|
||
|
c2 = Container("container2")
|
||
|
|
||
|
c1 >> c2
|
||
|
|
||
|
def test_edges_with_labels(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
c1 = Container("container1")
|
||
|
c2 = Container("container2")
|
||
|
|
||
|
c1 >> Relationship("depends on") >> c2
|
||
|
c1 << Relationship("is depended on by") << c2
|
||
|
|
||
|
def test_edge_without_constraint(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
s1 = System("system 1")
|
||
|
s2 = System("system 2")
|
||
|
|
||
|
s1 >> Relationship(constraint="False") >> s2
|
||
|
|
||
|
def test_cluster(self):
|
||
|
with Diagram(name=self.name, show=False):
|
||
|
with SystemBoundary("System"):
|
||
|
Container("container", "type", "description")
|