File: test_schema.py

package info (click to toggle)
python-django-pgschemas 1.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 848 kB
  • sloc: python: 3,887; makefile: 33; sh: 10; sql: 2
file content (120 lines) | stat: -rw-r--r-- 3,410 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
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
import pytest
from django.template import Context, Template

from django_pgschemas.routing.info import DomainInfo, HeadersInfo, SessionInfo
from django_pgschemas.schema import (
    Schema,
    deactivate,
    get_current_schema,
    get_default_schema,
    override,
    shallow_equal,
)


@pytest.mark.parametrize(
    "schema1, schema2, equals",
    [
        (
            get_default_schema(),
            get_default_schema(),
            True,
        ),
        (
            Schema.create("test1"),
            Schema.create("test1"),
            True,
        ),
        (
            Schema.create("test1"),
            Schema.create("test2"),
            False,
        ),
        (
            Schema.create("test1"),
            Schema.create("test1", SessionInfo("ref1")),
            False,
        ),
        (
            Schema.create("test1", HeadersInfo("ref1")),
            Schema.create("test1", SessionInfo("ref1")),
            False,
        ),
        (
            Schema.create("test1", HeadersInfo("ref1")),
            Schema.create("test1", HeadersInfo("ref1")),
            True,
        ),
        (
            Schema.create("test1", DomainInfo("domain1")),
            Schema.create("test1", DomainInfo("domain1", "folder")),
            False,
        ),
        (
            Schema.create("test1", DomainInfo("domain1", "folder")),
            Schema.create("test1", DomainInfo("domain1", "folder")),
            True,
        ),
    ],
)
def test_shallow_equal(schema1, schema2, equals):
    assert shallow_equal(schema1, schema2) == equals


def test_nested_override():
    deactivate()

    schema1 = Schema.create(schema_name="schema_1")
    schema2 = Schema.create(schema_name="schema_2")

    assert get_current_schema().schema_name == get_default_schema().schema_name

    with override(schema1):
        assert get_current_schema().schema_name == schema1.schema_name

        with override(schema2):
            assert get_current_schema().schema_name == schema2.schema_name

            with override(schema1):
                assert get_current_schema().schema_name == schema1.schema_name

            assert get_current_schema().schema_name == schema2.schema_name

        assert get_current_schema().schema_name == schema1.schema_name

    assert get_current_schema().schema_name == get_default_schema().schema_name


def test_nested_class_override():
    deactivate()

    schema1 = Schema.create(schema_name="schema_1")
    schema2 = Schema.create(schema_name="schema_2")

    assert get_current_schema().schema_name == get_default_schema().schema_name

    with schema1:
        assert get_current_schema().schema_name == schema1.schema_name

        with schema2:
            assert get_current_schema().schema_name == schema2.schema_name

            with schema1:
                assert get_current_schema().schema_name == schema1.schema_name

            assert get_current_schema().schema_name == schema2.schema_name

        assert get_current_schema().schema_name == schema1.schema_name

    assert get_current_schema().schema_name == get_default_schema().schema_name


def test_schema_is_template_renderable():
    schema = Schema.create(schema_name="template_schema")

    context = Context({"schema": schema})
    template = Template("{{ schema.schema_name }}")

    rendered = template.render(context)

    assert rendered == "template_schema"