diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-10-21 21:48:19 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-10-21 21:48:19 +0000 |
| commit | b2f9291bfb55f9305f59b8ba0e3fe04ff6f31cc6 (patch) | |
| tree | 5afe13809e933cc16ea5e2cca7908a0b6c0caab2 /repoze/bfg/tests/test_view.py | |
| parent | b06b260b83bfc2f40105c6e730f5e7e8eccd61d9 (diff) | |
| download | pyramid-b2f9291bfb55f9305f59b8ba0e3fe04ff6f31cc6.tar.gz pyramid-b2f9291bfb55f9305f59b8ba0e3fe04ff6f31cc6.tar.bz2 pyramid-b2f9291bfb55f9305f59b8ba0e3fe04ff6f31cc6.zip | |
- Change how ``bfg_view`` decorator works when used as a class method
decorator. In 1.1a7, it actually tried to grope every class in
scanned package at startup time looking for methods, which led to
some strange symptoms (e.g. ``AttributeError: object has no
attribute __provides__``). Now, instead of groping methods at
startup time, we just cause the ``bfg_view`` decorator itself to
populate its class' __dict__ when its used inside a class as a
method decorator. This is essentially a reversion back to 1.1a6
"grokking" behavior plus some special magic for using the
``bfg_view`` decorator as method decorator inside the ``bfg_view``
class itself.
Diffstat (limited to 'repoze/bfg/tests/test_view.py')
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py index 7b9597194..bbef24359 100644 --- a/repoze/bfg/tests/test_view.py +++ b/repoze/bfg/tests/test_view.py @@ -412,12 +412,25 @@ class TestBFGViewDecorator(unittest.TestCase): wrapped2 = decorator2(wrapped1) self.failUnless(wrapped1 is foo) self.failUnless(wrapped2 is foo) - self.assertEqual(len(wrapped2.__bfg_view_settings__), 2) - settings1 = wrapped2.__bfg_view_settings__[0] + self.assertEqual(len(foo.__bfg_view_settings__), 2) + settings1 = foo.__bfg_view_settings__[0] self.assertEqual(settings1['name'], '1') - settings2 = wrapped2.__bfg_view_settings__[1] + settings2 = foo.__bfg_view_settings__[1] self.assertEqual(settings2['name'], '2') + def test_call_as_method(self): + decorator = self._makeOne() + def foo(self): pass + def bar(self): pass + class foo(object): + """ docstring """ + foomethod = decorator(foo) + barmethod = decorator(bar) + settings = foo.__bfg_view_settings__ + self.assertEqual(len(settings), 2) + self.assertEqual(settings[0]['attr'], 'foo') + self.assertEqual(settings[1]['attr'], 'bar') + class TestDefaultForbiddenView(unittest.TestCase): def _callFUT(self, context, request): from repoze.bfg.view import default_forbidden_view |
