File: test_modelviz.py

package info (click to toggle)
python-django-extensions 4.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,812 kB
  • sloc: python: 18,601; javascript: 7,354; makefile: 108; xml: 17
file content (65 lines) | stat: -rw-r--r-- 2,380 bytes parent folder | download | duplicates (2)
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"])