58 op3 = schemahooks.MemSchemaNotifyChanges(session) |
58 op3 = schemahooks.MemSchemaNotifyChanges(session) |
59 op4 = hooks.DelayedDeleteOp(session) |
59 op4 = hooks.DelayedDeleteOp(session) |
60 op5 = hooks.CheckORelationOp(session) |
60 op5 = hooks.CheckORelationOp(session) |
61 self.assertEquals(session.pending_operations, [op1, op2, op4, op5, op3]) |
61 self.assertEquals(session.pending_operations, [op1, op2, op4, op5, op3]) |
62 |
62 |
63 |
|
64 def test_in_state_notification(self): |
|
65 result = [] |
|
66 # test both email notification and transition_information |
|
67 # whatever if we can connect to the default stmp server, transaction |
|
68 # should not fail |
|
69 def in_state_changed(session, eidfrom, rtype, eidto): |
|
70 tr = previous_state(session, eidfrom) |
|
71 if tr is None: |
|
72 result.append(tr) |
|
73 return |
|
74 content = u'trÀnsition from %s to %s' % (tr.name, entity_name(session, eidto)) |
|
75 result.append(content) |
|
76 SendMailOp(session, msg=content, recipients=['test@logilab.fr']) |
|
77 self.hm.register_hook(in_state_changed, |
|
78 'before_add_relation', 'in_state') |
|
79 self.execute('INSERT CWUser X: X login "paf", X upassword "wouf", X in_state S, X in_group G WHERE S name "activated", G name "users"') |
|
80 self.assertEquals(result, [None]) |
|
81 searchedops = [op for op in self.session.pending_operations |
|
82 if isinstance(op, SendMailOp)] |
|
83 self.assertEquals(len(searchedops), 0, |
|
84 self.session.pending_operations) |
|
85 self.commit() |
|
86 self.execute('SET X in_state S WHERE X login "paf", S name "deactivated"') |
|
87 self.assertEquals(result, [None, u'trÀnsition from activated to deactivated']) |
|
88 # one to send the mail, one to close the smtp connection |
|
89 searchedops = [op for op in self.session.pending_operations |
|
90 if isinstance(op, SendMailOp)] |
|
91 self.assertEquals(len(searchedops), 1, |
|
92 self.session.pending_operations) |
|
93 self.commit() |
|
94 self.assertEquals([], self.session.pending_operations) |
|
95 |
|
96 if __name__ == '__main__': |
63 if __name__ == '__main__': |
97 unittest_main() |
64 unittest_main() |