entities/test/unittest_wfobjs.py
changeset 3536 f6c9a5df80fb
parent 3230 1d25e928c299
parent 3528 77a69de16709
child 3589 a5432f99f2d9
equal deleted inserted replaced
3524:a3431f4e2f40 3536:f6c9a5df80fb
   337                           [('activated', 'deactivated', 'deactivate', None),
   337                           [('activated', 'deactivated', 'deactivate', None),
   338                            ('deactivated', 'asleep', None, 'workflow changed to "CWUser"'),
   338                            ('deactivated', 'asleep', None, 'workflow changed to "CWUser"'),
   339                            ('asleep', 'activated', None, 'workflow changed to "default user workflow"'),])
   339                            ('asleep', 'activated', None, 'workflow changed to "default user workflow"'),])
   340 
   340 
   341 
   341 
       
   342 class AutoTransitionTC(CubicWebTC):
       
   343 
       
   344     def setup_database(self):
       
   345         self.wf = add_wf(self, 'CWUser')
       
   346         asleep = self.wf.add_state('asleep', initial=True)
       
   347         dead = self.wf.add_state('dead')
       
   348         self.wf.add_transition('rest', asleep, asleep)
       
   349         self.wf.add_transition('sick', asleep, dead, type=u'auto',
       
   350                                conditions=({'expr': u'U surname "toto"',
       
   351                                             'mainvars': u'U'},))
       
   352 
       
   353     def test_auto_transition_fired(self):
       
   354         user = self.create_user('member')
       
   355         self.execute('SET X custom_workflow WF WHERE X eid %(x)s, WF eid %(wf)s',
       
   356                      {'wf': self.wf.eid, 'x': user.eid})
       
   357         self.commit()
       
   358         user.clear_all_caches()
       
   359         self.assertEquals(user.state, 'asleep')
       
   360         self.assertEquals([t.name for t in user.possible_transitions()],
       
   361                           ['rest'])
       
   362         user.fire_transition('rest')
       
   363         self.commit()
       
   364         user.clear_all_caches()
       
   365         self.assertEquals(user.state, 'asleep')
       
   366         self.assertEquals([t.name for t in user.possible_transitions()],
       
   367                           ['rest'])
       
   368         self.assertEquals(parse_hist(user.workflow_history),
       
   369                           [('asleep', 'asleep', 'rest', None)])
       
   370         self.request().user.set_attributes(surname=u'toto') # fulfill condition
       
   371         self.commit()
       
   372         user.fire_transition('rest')
       
   373         self.commit()
       
   374         user.clear_all_caches()
       
   375         self.assertEquals(user.state, 'dead')
       
   376         self.assertEquals(parse_hist(user.workflow_history),
       
   377                           [('asleep', 'asleep', 'rest', None),
       
   378                            ('asleep', 'asleep', 'rest', None),
       
   379                            ('asleep', 'dead', 'sick', None),])
       
   380 
       
   381 
   342 class WorkflowHooksTC(CubicWebTC):
   382 class WorkflowHooksTC(CubicWebTC):
   343 
   383 
   344     def setUp(self):
   384     def setUp(self):
   345         CubicWebTC.setUp(self)
   385         CubicWebTC.setUp(self)
   346         self.wf = self.session.user.current_workflow
   386         self.wf = self.session.user.current_workflow