15 # details. |
15 # details. |
16 # |
16 # |
17 # You should have received a copy of the GNU Lesser General Public License along |
17 # You should have received a copy of the GNU Lesser General Public License along |
18 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
18 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
19 """unit/functional tests for cubicweb.server.hook""" |
19 """unit/functional tests for cubicweb.server.hook""" |
|
20 |
|
21 from __future__ import with_statement |
20 |
22 |
21 from logilab.common.testlib import TestCase, unittest_main, mock_object |
23 from logilab.common.testlib import TestCase, unittest_main, mock_object |
22 |
24 |
23 |
25 |
24 from cubicweb.devtools import TestServerConfiguration |
26 from cubicweb.devtools import TestServerConfiguration |
99 self.o = hook.HooksRegistry(self.vreg) |
101 self.o = hook.HooksRegistry(self.vreg) |
100 |
102 |
101 def test_register_bad_hook1(self): |
103 def test_register_bad_hook1(self): |
102 class _Hook(hook.Hook): |
104 class _Hook(hook.Hook): |
103 events = ('before_add_entiti',) |
105 events = ('before_add_entiti',) |
104 ex = self.assertRaises(Exception, self.o.register, _Hook) |
106 with self.assertRaises(Exception) as cm: |
105 self.assertEqual(str(ex), 'bad event before_add_entiti on %s._Hook' % __name__) |
107 self.o.register(_Hook) |
|
108 self.assertEqual(str(cm.exception), 'bad event before_add_entiti on %s._Hook' % __name__) |
106 |
109 |
107 def test_register_bad_hook2(self): |
110 def test_register_bad_hook2(self): |
108 class _Hook(hook.Hook): |
111 class _Hook(hook.Hook): |
109 events = None |
112 events = None |
110 ex = self.assertRaises(Exception, self.o.register, _Hook) |
113 with self.assertRaises(Exception) as cm: |
111 self.assertEqual(str(ex), 'bad .events attribute None on %s._Hook' % __name__) |
114 self.o.register(_Hook) |
|
115 self.assertEqual(str(cm.exception), 'bad .events attribute None on %s._Hook' % __name__) |
112 |
116 |
113 def test_register_bad_hook3(self): |
117 def test_register_bad_hook3(self): |
114 class _Hook(hook.Hook): |
118 class _Hook(hook.Hook): |
115 events = 'before_add_entity' |
119 events = 'before_add_entity' |
116 ex = self.assertRaises(Exception, self.o.register, _Hook) |
120 with self.assertRaises(Exception) as cm: |
117 self.assertEqual(str(ex), 'bad event b on %s._Hook' % __name__) |
121 self.o.register(_Hook) |
|
122 self.assertEqual(str(cm.exception), 'bad event b on %s._Hook' % __name__) |
118 |
123 |
119 def test_call_hook(self): |
124 def test_call_hook(self): |
120 self.o.register(AddAnyHook) |
125 self.o.register(AddAnyHook) |
121 dis = set() |
126 dis = set() |
122 cw = mock_object(vreg=self.vreg, |
127 cw = mock_object(vreg=self.vreg, |