diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-03 18:53:39 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-03 18:53:39 -0400 |
| commit | f1bdd4e4bbf8366ff7177ebc3ee6647f32fd414f (patch) | |
| tree | 3ffef191d48fc13c0595c893ef5ab2bf55db5a9e /test/base/test_inspect.py | |
| parent | 53b4337de3ab4d4abe17ca47903aaaa8664cd50f (diff) | |
| download | sqlalchemy-f1bdd4e4bbf8366ff7177ebc3ee6647f32fd414f.tar.gz | |
begin implementing inspection system for #2208
Diffstat (limited to 'test/base/test_inspect.py')
| -rw-r--r-- | test/base/test_inspect.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/base/test_inspect.py b/test/base/test_inspect.py new file mode 100644 index 000000000..b95b7d8c5 --- /dev/null +++ b/test/base/test_inspect.py @@ -0,0 +1,62 @@ +"""test the inspection registry system.""" + +from test.lib.testing import eq_, assert_raises +from sqlalchemy import exc, util +from sqlalchemy import inspection, inspect +from test.lib import fixtures + +class TestFixture(object): + pass + +class TestEvents(fixtures.TestBase): + """Test class- and instance-level event registration.""" + + 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_class_insp(self): + class SomeFoo(TestFixture): + pass + + @inspection._inspects(SomeFoo) + class SomeFooInspect(object): + def __init__(self, target): + self.target = target + + 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) |
