blob: d10aeca9a95582d9d5db4424773e86235c9b3f1b (
plain)
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
|
"""test the inspection registry system."""
from sqlalchemy.testing import eq_, assert_raises_message
from sqlalchemy import exc, util
from sqlalchemy import inspection, inspect
from sqlalchemy.testing import fixtures
class TestFixture(object):
pass
class TestInspection(fixtures.TestBase):
def tearDown(self):
for type_ in list(inspection._registrars):
if issubclass(type_, TestFixture):
del inspection._registrars[type_]
def test_def_insp(self):
class SomeFoo(TestFixture):
pass
@inspection._inspects(SomeFoo)
def insp_somefoo(subject):
return {"insp": subject}
somefoo = SomeFoo()
insp = inspect(somefoo)
assert insp["insp"] is somefoo
def test_no_inspect(self):
class SomeFoo(TestFixture):
pass
assert_raises_message(
exc.NoInspectionAvailable,
"No inspection system is available for object of type ",
inspect, SomeFoo
)
def test_class_insp(self):
class SomeFoo(TestFixture):
pass
class SomeFooInspect(object):
def __init__(self, target):
self.target = target
SomeFooInspect = inspection._inspects(SomeFoo)(SomeFooInspect)
somefoo = SomeFoo()
insp = inspect(somefoo)
assert isinstance(insp, SomeFooInspect)
assert insp.target is somefoo
def test_hierarchy_insp(self):
class SomeFoo(TestFixture):
pass
class SomeSubFoo(SomeFoo):
pass
@inspection._inspects(SomeFoo)
def insp_somefoo(subject):
return 1
@inspection._inspects(SomeSubFoo)
def insp_somesubfoo(subject):
return 2
somefoo = SomeFoo()
eq_(inspect(SomeFoo()), 1)
eq_(inspect(SomeSubFoo()), 2)
|