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