diff options
| author | David Cramer | 2011-03-31 11:42:23 -0700 |
|---|---|---|
| committer | David Cramer | 2011-03-31 11:42:23 -0700 |
| commit | 3f578cf684b7e3b9a20d9c777950c28c44db074a (patch) | |
| tree | d7573707ccdfbd0627d85c9a2b6f90d62f7537fe /debug_toolbar/tests/tests.py | |
| parent | f492b56c8200eebb77b8023ab386c9ef412cc06b (diff) | |
| download | django-debug-toolbar-3f578cf684b7e3b9a20d9c777950c28c44db074a.tar.bz2 | |
Add utilities to inject and monitor functions. Change DB tracking to use new injection method on BaseDatabaseWrapper.cursor
Diffstat (limited to 'debug_toolbar/tests/tests.py')
| -rw-r--r-- | debug_toolbar/tests/tests.py | 137 |
1 files changed, 136 insertions, 1 deletions
diff --git a/debug_toolbar/tests/tests.py b/debug_toolbar/tests/tests.py index cdc1947..476802c 100644 --- a/debug_toolbar/tests/tests.py +++ b/debug_toolbar/tests/tests.py @@ -1,6 +1,7 @@ from debug_toolbar.middleware import DebugToolbarMiddleware from debug_toolbar.panels.sql import SQLDebugPanel from debug_toolbar.toolbar.loader import DebugToolbar +from debug_toolbar.utils.tracking import pre_dispatch, post_dispatch, callbacks from django.contrib.auth.models import User from django.test import TestCase @@ -36,4 +37,138 @@ class SQLPanelTestCase(BaseTestCase): self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) -
\ No newline at end of file + +def module_func(*args, **kwargs): + """Used by dispatch tests""" + return 'blah' + +class TrackingTestCase(BaseTestCase): + @classmethod + def class_method(cls, *args, **kwargs): + return 'blah' + + def class_func(self, *args, **kwargs): + """Used by dispatch tests""" + return 'blah' + + def test_pre_hook(self): + foo = {} + + @pre_dispatch(module_func) + def test(**kwargs): + foo.update(kwargs) + + self.assertTrue(hasattr(module_func, '__wrapped__')) + self.assertEquals(len(callbacks['before']), 1) + + module_func('hi', foo='bar') + + self.assertTrue('sender' in foo, foo) + # best we can do + self.assertEquals(foo['sender'].__name__, 'module_func') + self.assertTrue('start' in foo, foo) + self.assertGreater(foo['start'], 0) + self.assertTrue('stop' not in foo, foo) + self.assertTrue('args' in foo, foo) + self.assertTrue(len(foo['args']), 1) + self.assertEquals(foo['args'][0], 'hi') + self.assertTrue('kwargs' in foo, foo) + self.assertTrue(len(foo['kwargs']), 1) + self.assertTrue('foo' in foo['kwargs']) + self.assertEquals(foo['kwargs']['foo'], 'bar') + + callbacks['before'] = {} + + @pre_dispatch(TrackingTestCase.class_func) + def test(**kwargs): + foo.update(kwargs) + + self.assertTrue(hasattr(TrackingTestCase.class_func, '__wrapped__')) + self.assertEquals(len(callbacks['before']), 1) + + self.class_func('hello', foo='bar') + + self.assertTrue('sender' in foo, foo) + # best we can do + self.assertEquals(foo['sender'].__name__, 'class_func') + self.assertTrue('start' in foo, foo) + self.assertGreater(foo['start'], 0) + self.assertTrue('stop' not in foo, foo) + self.assertTrue('args' in foo, foo) + self.assertTrue(len(foo['args']), 2) + self.assertEquals(foo['args'][1], 'hello') + self.assertTrue('kwargs' in foo, foo) + self.assertTrue(len(foo['kwargs']), 1) + self.assertTrue('foo' in foo['kwargs']) + self.assertEquals(foo['kwargs']['foo'], 'bar') + + # callbacks['before'] = {} + # + # @pre_dispatch(TrackingTestCase.class_method) + # def test(**kwargs): + # foo.update(kwargs) + # + # self.assertTrue(hasattr(TrackingTestCase.class_method, '__wrapped__')) + # self.assertEquals(len(callbacks['before']), 1) + # + # TrackingTestCase.class_method() + # + # self.assertTrue('sender' in foo, foo) + # # best we can do + # self.assertEquals(foo['sender'].__name__, 'class_method') + # self.assertTrue('start' in foo, foo) + # self.assertTrue('stop' not in foo, foo) + # self.assertTrue('args' in foo, foo) + + def test_post_hook(self): + foo = {} + + @post_dispatch(module_func) + def test(**kwargs): + foo.update(kwargs) + + self.assertTrue(hasattr(module_func, '__wrapped__')) + self.assertEquals(len(callbacks['after']), 1) + + module_func('hi', foo='bar') + + self.assertTrue('sender' in foo, foo) + # best we can do + self.assertEquals(foo['sender'].__name__, 'module_func') + self.assertTrue('start' in foo, foo) + self.assertGreater(foo['start'], 0) + self.assertTrue('stop' in foo, foo) + self.assertGreater(foo['stop'], foo['start']) + self.assertTrue('args' in foo, foo) + self.assertTrue(len(foo['args']), 1) + self.assertEquals(foo['args'][0], 'hi') + self.assertTrue('kwargs' in foo, foo) + self.assertTrue(len(foo['kwargs']), 1) + self.assertTrue('foo' in foo['kwargs']) + self.assertEquals(foo['kwargs']['foo'], 'bar') + + callbacks['after'] = {} + + @post_dispatch(TrackingTestCase.class_func) + def test(**kwargs): + foo.update(kwargs) + + self.assertTrue(hasattr(TrackingTestCase.class_func, '__wrapped__')) + self.assertEquals(len(callbacks['after']), 1) + + self.class_func('hello', foo='bar') + + self.assertTrue('sender' in foo, foo) + # best we can do + self.assertEquals(foo['sender'].__name__, 'class_func') + self.assertTrue('start' in foo, foo) + self.assertGreater(foo['start'], 0) + self.assertTrue('stop' in foo, foo) + self.assertGreater(foo['stop'], foo['start']) + self.assertTrue('args' in foo, foo) + self.assertTrue(len(foo['args']), 2) + self.assertEquals(foo['args'][1], 'hello') + self.assertTrue('kwargs' in foo, foo) + self.assertTrue(len(foo['kwargs']), 1) + self.assertTrue('foo' in foo['kwargs']) + self.assertEquals(foo['kwargs']['foo'], 'bar')
\ No newline at end of file |
