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
|
# -*- coding: utf-8 -*-
from django.test import SimpleTestCase
from django_extensions.management.modelviz import generate_graph_data, ON_DELETE_COLORS
class ModelVizTests(SimpleTestCase):
def test_generate_graph_data_can_render_label(self):
app_labels = ["auth"]
data = generate_graph_data(app_labels)
models = data["graphs"][0]["models"]
user_data = [x for x in models if x["name"] == "User"][0]
relation_labels = [x["label"] for x in user_data["relations"]]
self.assertIn("groups (user)", relation_labels)
def test_render_unicode_field_label(self):
app_labels = ["django_extensions"]
data = generate_graph_data(app_labels, verbose_names=True)
models = data["graphs"][0]["models"]
model = [x for x in models if x["name"] == "UnicodeVerboseNameModel"][0]
fields = dict((_f["name"], _f["label"]) for _f in model["fields"])
expected = {
"id": "ID",
"cafe": "Café",
"parent_cafe": "Café latte",
}
self.assertEqual(expected, fields)
def test_on_delete_color_coding(self):
app_labels = ["django_extensions"]
data = generate_graph_data(app_labels, color_code_deletions=True)
models = data["graphs"][0]["models"]
for model in models:
relations = [
x
for x in model["relations"]
if x["type"] in ("ForeignKey", "OneToOneField")
]
for relation in relations:
field = [
x["field"] for x in model["fields"] if x["name"] == relation["name"]
][0]
on_delete = getattr(field.remote_field, "on_delete", None)
expected_color = ON_DELETE_COLORS[on_delete]
self.assertIn("color={}".format(expected_color), relation["arrows"])
def test_disabled_on_delete_color_coding(self):
app_labels = ["django_extensions"]
data = generate_graph_data(app_labels)
models = data["graphs"][0]["models"]
for model in models:
relations = [
x
for x in model["relations"]
if x["type"] in ("ForeignKey", "OneToOneField")
]
for relation in relations:
self.assertNotIn("color=", relation["arrows"])
|