@@ -817,3 +817,75 @@ def test_send_milestones_overdue_reminders(self):
817817 self .assertTrue (group .acronym in outbox [- 1 ]["Subject" ])
818818 self .assertTrue (m1 .desc in unicode (outbox [- 1 ]))
819819 self .assertTrue (m2 .desc in unicode (outbox [- 1 ]))
820+
821+ class CustomizeWorkflowTestCase (django .test .TestCase ):
822+ fixtures = ['names' ]
823+
824+ def test_customize_workflow (self ):
825+ make_test_data ()
826+
827+ group = Group .objects .get (acronym = "mars" )
828+
829+ url = urlreverse ('ietf.wginfo.edit.customize_workflow' , kwargs = dict (acronym = group .acronym ))
830+ login_testing_unauthorized (self , "secretary" , url )
831+
832+ state = State .objects .get (used = True , type = "draft-stream-ietf" , slug = "wg-lc" )
833+ self .assertTrue (state not in group .unused_states .all ())
834+
835+ # get
836+ r = self .client .get (url )
837+ self .assertEquals (r .status_code , 200 )
838+ q = PyQuery (r .content )
839+ self .assertEquals (len (q ("form.set-state" ).find ("input[name=state][value='%s']" % state .pk ).parents ("form" ).find ("input[name=active][value='0']" )), 1 )
840+
841+ # deactivate state
842+ r = self .client .post (url ,
843+ dict (action = "setstateactive" ,
844+ state = state .pk ,
845+ active = "0" ))
846+ self .assertEquals (r .status_code , 302 )
847+ r = self .client .get (url )
848+ q = PyQuery (r .content )
849+ self .assertEquals (len (q ("form.set-state" ).find ("input[name=state][value='%s']" % state .pk ).parents ("form" ).find ("input[name=active][value='1']" )), 1 )
850+ group = Group .objects .get (acronym = group .acronym )
851+ self .assertTrue (state in group .unused_states .all ())
852+
853+ # change next states
854+ state = State .objects .get (used = True , type = "draft-stream-ietf" , slug = "wg-doc" )
855+ next_states = State .objects .filter (used = True , type = b"draft-stream-ietf" , slug__in = ["parked" , "dead" , "wait-wgw" , 'sub-pub' ]).values_list ('pk' , flat = True )
856+ r = self .client .post (url ,
857+ dict (action = "setnextstates" ,
858+ state = state .pk ,
859+ next_states = next_states ))
860+ self .assertEquals (r .status_code , 302 )
861+ r = self .client .get (url )
862+ q = PyQuery (r .content )
863+ self .assertEquals (len (q ("form.set-next-states" ).find ("input[name=state][value='%s']" % state .pk ).parents ('form' ).find ("input[name=next_states][checked=checked]" )), len (next_states ))
864+ transitions = GroupStateTransitions .objects .filter (group = group , state = state )
865+ self .assertEquals (len (transitions ), 1 )
866+ self .assertEquals (set (transitions [0 ].next_states .values_list ("pk" , flat = True )), set (next_states ))
867+
868+ # change them back to default
869+ next_states = state .next_states .values_list ("pk" , flat = True )
870+ r = self .client .post (url ,
871+ dict (action = "setnextstates" ,
872+ state = state .pk ,
873+ next_states = next_states ))
874+ self .assertEquals (r .status_code , 302 )
875+ r = self .client .get (url )
876+ q = PyQuery (r .content )
877+ transitions = GroupStateTransitions .objects .filter (group = group , state = state )
878+ self .assertEquals (len (transitions ), 0 )
879+
880+ # deactivate tag
881+ tag = DocTagName .objects .get (slug = "w-expert" )
882+ r = self .client .post (url ,
883+ dict (action = "settagactive" ,
884+ tag = tag .pk ,
885+ active = "0" ))
886+ self .assertEquals (r .status_code , 302 )
887+ r = self .client .get (url )
888+ q = PyQuery (r .content )
889+ self .assertEquals (len (q ('form' ).find ('input[name=tag][value="%s"]' % tag .pk ).parents ("form" ).find ("input[name=active]" )), 1 )
890+ group = Group .objects .get (acronym = group .acronym )
891+ self .assertTrue (tag in group .unused_tags .all ())
0 commit comments