30 self.o.register_hook, self._hook, 'session_logout', 'CWEType') |
30 self.o.register_hook, self._hook, 'session_logout', 'CWEType') |
31 self.assertRaises(AssertionError, |
31 self.assertRaises(AssertionError, |
32 self.o.register_hook, self._hook, 'server_startup', 'CWEType') |
32 self.o.register_hook, self._hook, 'server_startup', 'CWEType') |
33 self.assertRaises(AssertionError, |
33 self.assertRaises(AssertionError, |
34 self.o.register_hook, self._hook, 'server_shutdown', 'CWEType') |
34 self.o.register_hook, self._hook, 'server_shutdown', 'CWEType') |
35 |
35 |
36 def test_register_hook1(self): |
36 def test_register_hook1(self): |
37 self.o.register_hook(self._hook, 'before_add_entity') |
37 self.o.register_hook(self._hook, 'before_add_entity') |
38 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
38 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
39 self._test_called_hooks() |
39 self._test_called_hooks() |
40 |
40 |
41 def test_register_hook2(self): |
41 def test_register_hook2(self): |
42 self.o.register_hook(self._hook, 'before_add_entity', '') |
42 self.o.register_hook(self._hook, 'before_add_entity', '') |
43 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
43 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
44 self._test_called_hooks() |
44 self._test_called_hooks() |
45 |
45 |
46 def test_register_hook3(self): |
46 def test_register_hook3(self): |
47 self.o.register_hook(self._hook, 'before_add_entity', None) |
47 self.o.register_hook(self._hook, 'before_add_entity', None) |
48 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
48 self.o.register_hook(self._hook, 'before_delete_entity', 'Personne') |
49 self._test_called_hooks() |
49 self._test_called_hooks() |
50 |
50 |
51 def test_register_hooks(self): |
51 def test_register_hooks(self): |
52 self.o.register_hooks({'before_add_entity' : {'': [self._hook]}, |
52 self.o.register_hooks({'before_add_entity' : {'': [self._hook]}, |
53 'before_delete_entity' : {'Personne': [self._hook]}, |
53 'before_delete_entity' : {'Personne': [self._hook]}, |
54 }) |
54 }) |
55 self._test_called_hooks() |
55 self._test_called_hooks() |
60 self.o.call_hooks, 'after_delete_entity', 'Personne', |
60 self.o.call_hooks, 'after_delete_entity', 'Personne', |
61 *self.args, **self.kwargs) |
61 *self.args, **self.kwargs) |
62 self.o.unregister_hook(self._hook, 'after_delete_entity', 'Personne') |
62 self.o.unregister_hook(self._hook, 'after_delete_entity', 'Personne') |
63 # no hook should be called there |
63 # no hook should be called there |
64 self.o.call_hooks('after_delete_entity', 'Personne') |
64 self.o.call_hooks('after_delete_entity', 'Personne') |
65 |
65 |
66 |
66 |
67 def _test_called_hooks(self): |
67 def _test_called_hooks(self): |
68 self.assertRaises(HookCalled, |
68 self.assertRaises(HookCalled, |
69 self.o.call_hooks, 'before_add_entity', '', |
69 self.o.call_hooks, 'before_add_entity', '', |
70 *self.args, **self.kwargs) |
70 *self.args, **self.kwargs) |
100 """make sure before_xxx_relation hooks are called directly""" |
100 """make sure before_xxx_relation hooks are called directly""" |
101 self.o.register_hook(self._before_relation_hook, |
101 self.o.register_hook(self._before_relation_hook, |
102 'before_add_relation', 'concerne') |
102 'before_add_relation', 'concerne') |
103 self.assertEquals(self.called, []) |
103 self.assertEquals(self.called, []) |
104 self.o.call_hooks('before_add_relation', 'concerne', 'USER', |
104 self.o.call_hooks('before_add_relation', 'concerne', 'USER', |
105 1, 'concerne', 2) |
105 1, 'concerne', 2) |
106 self.assertEquals(self.called, [(1, 'concerne', 2)]) |
106 self.assertEquals(self.called, [(1, 'concerne', 2)]) |
107 |
107 |
108 def test_after_add_relation(self): |
108 def test_after_add_relation(self): |
109 """make sure after_xxx_relation hooks are deferred""" |
109 """make sure after_xxx_relation hooks are deferred""" |
110 self.o.register_hook(self._after_relation_hook, |
110 self.o.register_hook(self._after_relation_hook, |
111 'after_add_relation', 'concerne') |
111 'after_add_relation', 'concerne') |
112 self.assertEquals(self.called, []) |
112 self.assertEquals(self.called, []) |
113 self.o.call_hooks('after_add_relation', 'concerne', 'USER', |
113 self.o.call_hooks('after_add_relation', 'concerne', 'USER', |
114 1, 'concerne', 2) |
114 1, 'concerne', 2) |
115 self.o.call_hooks('after_add_relation', 'concerne', 'USER', |
115 self.o.call_hooks('after_add_relation', 'concerne', 'USER', |
116 3, 'concerne', 4) |
116 3, 'concerne', 4) |
117 self.assertEquals(self.called, [(1, 'concerne', 2), (3, 'concerne', 4)]) |
117 self.assertEquals(self.called, [(1, 'concerne', 2), (3, 'concerne', 4)]) |
118 |
118 |
119 def test_before_delete_relation(self): |
119 def test_before_delete_relation(self): |
120 """make sure before_xxx_relation hooks are called directly""" |
120 """make sure before_xxx_relation hooks are called directly""" |
121 self.o.register_hook(self._before_relation_hook, |
121 self.o.register_hook(self._before_relation_hook, |
122 'before_delete_relation', 'concerne') |
122 'before_delete_relation', 'concerne') |
123 self.assertEquals(self.called, []) |
123 self.assertEquals(self.called, []) |
124 self.o.call_hooks('before_delete_relation', 'concerne', 'USER', |
124 self.o.call_hooks('before_delete_relation', 'concerne', 'USER', |
125 1, 'concerne', 2) |
125 1, 'concerne', 2) |
126 self.assertEquals(self.called, [(1, 'concerne', 2)]) |
126 self.assertEquals(self.called, [(1, 'concerne', 2)]) |
127 |
127 |
128 def test_after_delete_relation(self): |
128 def test_after_delete_relation(self): |
129 """make sure after_xxx_relation hooks are deferred""" |
129 """make sure after_xxx_relation hooks are deferred""" |
130 self.o.register_hook(self._after_relation_hook, |
130 self.o.register_hook(self._after_relation_hook, |
164 |
164 |
165 class MyHook(Hook): |
165 class MyHook(Hook): |
166 schema = schema # set for actual hooks at registration time |
166 schema = schema # set for actual hooks at registration time |
167 events = ('whatever', 'another') |
167 events = ('whatever', 'another') |
168 accepts = ('Societe', 'Division') |
168 accepts = ('Societe', 'Division') |
169 |
169 |
170 class HookTC(RepositoryBasedTC): |
170 class HookTC(RepositoryBasedTC): |
171 def test_inheritance(self): |
171 def test_inheritance(self): |
172 self.assertEquals(list(MyHook.register_to()), |
172 self.assertEquals(list(MyHook.register_to()), |
173 zip(repeat('whatever'), ('Societe', 'Division', 'SubDivision')) |
173 zip(repeat('whatever'), ('Societe', 'Division', 'SubDivision')) |
174 + zip(repeat('another'), ('Societe', 'Division', 'SubDivision'))) |
174 + zip(repeat('another'), ('Societe', 'Division', 'SubDivision'))) |