@@ -913,25 +913,32 @@ class DocumentMeetingTests(TestCase):
913913
914914 def setUp (self ):
915915 self .group = GroupFactory (type_id = 'wg' ,state_id = 'active' )
916+ self .group_chair = PersonFactory ()
917+ self .group .role_set .create (name_id = 'chair' ,person = self .group_chair ,email = self .group_chair .email ())
918+
919+ self .other_group = GroupFactory (type_id = 'wg' ,state_id = 'active' )
920+ self .other_chair = PersonFactory ()
921+ self .other_group .role_set .create (name_id = 'chair' ,person = self .other_chair ,email = self .other_chair .email ())
916922
917923 today = datetime .date .today ()
918924 cut_days = settings .MEETING_MATERIALS_SUBMISSION_CORRECTION_DAYS
919925 self .past_cutoff = SessionFactory .create (meeting__type_id = 'ietf' ,group = self .group ,meeting__date = today - datetime .timedelta (days = 1 + cut_days ))
920926 self .past = SessionFactory .create (meeting__type_id = 'ietf' ,group = self .group ,meeting__date = today - datetime .timedelta (days = cut_days / 2 ))
921927 self .inprog = SessionFactory .create (meeting__type_id = 'ietf' ,group = self .group ,meeting__date = today - datetime .timedelta (days = 1 ))
922- SessionFactory .create (meeting__type_id = 'ietf' ,group = self .group ,meeting__date = today + datetime .timedelta (days = 90 ))
923- SessionFactory .create (meeting__type_id = 'interim' ,group = self .group ,meeting__date = today + datetime .timedelta (days = 45 ))
928+ self . future = SessionFactory .create (meeting__type_id = 'ietf' ,group = self .group ,meeting__date = today + datetime .timedelta (days = 90 ))
929+ self . interim = SessionFactory .create (meeting__type_id = 'interim' ,group = self .group ,meeting__date = today + datetime .timedelta (days = 45 ))
924930
925931 def test_view_document_meetings (self ):
926932 doc = DocumentFactory .create ()
927933 doc .sessionpresentation_set .create (session = self .inprog ,rev = None )
934+ doc .sessionpresentation_set .create (session = self .interim ,rev = None )
928935
929936 url = urlreverse ('ietf.doc.views_material.all_presentations' , kwargs = dict (name = doc .name ))
930937 response = self .client .get (url )
931938 self .assertEqual (response .status_code , 200 )
932939 q = PyQuery (response .content )
933- self .assertTrue (q ( '#inprogressmeets' ))
934- self .assertFalse (any ([q (id ) for id in ['#pastmeets' ,'#futuremeets' ]]))
940+ self .assertTrue (all ([ q ( id ) for id in [ '#inprogressmeets' , '#futuremeets' ]] ))
941+ self .assertFalse (any ([q (id ) for id in ['#pastmeets' ,]]))
935942 self .assertFalse (q ('#addsessionsbutton' ))
936943 self .assertFalse (q ("a.btn:contains('Remove document')" ))
937944
@@ -944,29 +951,130 @@ def test_view_document_meetings(self):
944951 q = PyQuery (response .content )
945952 self .assertTrue (q ('#addsessionsbutton' ))
946953 self .assertEqual (1 ,len (q ("#inprogressmeets a.btn-default:contains('Remove document')" )))
954+ self .assertEqual (1 ,len (q ("#futuremeets a.btn-default:contains('Remove document')" )))
947955 self .assertEqual (1 ,len (q ("#pastmeets a.btn-default:contains('Remove document')" )))
948956 self .assertEqual (1 ,len (q ("#pastmeets a.btn-warning:contains('Remove document')" )))
949957
950- group_chair = PersonFactory ()
951- self .group .role_set .create (name_id = 'chair' ,person = group_chair ,email = group_chair .email ())
952- self .client .login (username = group_chair .user .username ,password = '%s+password' % group_chair .user .username )
958+ self .client .login (username = self .group_chair .user .username ,password = '%s+password' % self .group_chair .user .username )
953959 response = self .client .get (url )
954960 self .assertEqual (response .status_code , 200 )
955961 q = PyQuery (response .content )
956962 self .assertTrue (q ('#addsessionsbutton' ))
957963 self .assertEqual (1 ,len (q ("#inprogressmeets a.btn-default:contains('Remove document')" )))
964+ self .assertEqual (1 ,len (q ("#futuremeets a.btn-default:contains('Remove document')" )))
958965 self .assertEqual (1 ,len (q ("#pastmeets a.btn-default:contains('Remove document')" )))
959966 self .assertTrue (q ('#pastmeets' ))
960967 self .assertFalse (q ("#pastmeets a.btn-warning:contains('Remove document')" ))
961968
962- other_group = GroupFactory (type_id = 'wg' ,state_id = 'active' )
963- other_chair = PersonFactory ()
964- other_group .role_set .create (name_id = 'chair' ,person = other_chair ,email = group_chair .email ())
965- self .client .login (username = other_chair .user .username ,password = '%s+password' % other_chair .user .username )
969+ self .client .login (username = self .other_chair .user .username ,password = '%s+password' % self .other_chair .user .username )
966970 response = self .client .get (url )
967971 self .assertEqual (response .status_code , 200 )
968972 q = PyQuery (response .content )
969973 self .assertTrue (q ('#addsessionsbutton' ))
970- self .assertTrue (all ([q (id ) for id in ['#pastmeets' ,'#inprogressmeets' ]]))
974+ self .assertTrue (all ([q (id ) for id in ['#futuremeets' , '# pastmeets' ,'#inprogressmeets' ]]))
971975 self .assertFalse (q ("#inprogressmeets a.btn:contains('Remove document')" ))
976+ self .assertFalse (q ("#futuremeets a.btn:contains('Remove document')" ))
972977 self .assertFalse (q ("#pastmeets a.btn:contains('Remove document')" ))
978+
979+ def test_edit_document_session (self ):
980+ doc = DocumentFactory .create ()
981+ sp = doc .sessionpresentation_set .create (session = self .future ,rev = None )
982+
983+ url = urlreverse ('ietf.doc.views_doc.edit_sessionpresentation' ,kwargs = dict (name = 'no-such-doc' ,session_id = sp .session_id ))
984+ response = self .client .get (url )
985+ self .assertEqual (response .status_code , 404 )
986+
987+ url = urlreverse ('ietf.doc.views_doc.edit_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = 0 ))
988+ response = self .client .get (url )
989+ self .assertEqual (response .status_code , 404 )
990+
991+ url = urlreverse ('ietf.doc.views_doc.edit_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = sp .session_id ))
992+ response = self .client .get (url )
993+ self .assertEqual (response .status_code , 404 )
994+
995+ self .client .login (username = self .other_chair .user .username ,password = '%s+password' % self .other_chair .user .username )
996+ response = self .client .get (url )
997+ self .assertEqual (response .status_code , 404 )
998+
999+ self .client .login (username = self .group_chair .user .username ,password = '%s+password' % self .group_chair .user .username )
1000+ response = self .client .get (url )
1001+ self .assertEqual (response .status_code , 200 )
1002+ q = PyQuery (response .content )
1003+ self .assertEqual (2 ,len (q ('select#id_version option' )))
1004+
1005+ # Simulate the cancel button
1006+ response = self .client .post (url ,{})
1007+ self .assertEqual (response .status_code , 302 )
1008+ self .assertEqual (doc .sessionpresentation_set .get (pk = sp .pk ).rev ,None )
1009+
1010+ self .assertEqual (1 ,doc .docevent_set .count ())
1011+ response = self .client .post (url ,{'version' :'00' ,'save' :'' })
1012+ response = self .client .post (url ,{})
1013+ self .assertEqual (response .status_code , 302 )
1014+ self .assertEqual (doc .sessionpresentation_set .get (pk = sp .pk ).rev ,'00' )
1015+ self .assertEqual (2 ,doc .docevent_set .count ())
1016+
1017+ def test_edit_document_session_after_proceedings_closed (self ):
1018+ doc = DocumentFactory .create ()
1019+ sp = doc .sessionpresentation_set .create (session = self .past_cutoff ,rev = None )
1020+
1021+ url = urlreverse ('ietf.doc.views_doc.edit_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = sp .session_id ))
1022+ self .client .login (username = self .group_chair .user .username ,password = '%s+password' % self .group_chair .user .username )
1023+ response = self .client .get (url )
1024+ self .assertEqual (response .status_code , 404 )
1025+
1026+ self .client .login (username = 'secretary' ,password = 'secretary+password' )
1027+ response = self .client .get (url )
1028+ self .assertEqual (response .status_code , 200 )
1029+ q = PyQuery (response .content )
1030+ self .assertEqual (1 ,len (q (".alert-warning:contains('may affect published proceedings')" )))
1031+
1032+ def test_remove_document_self (self ):
1033+ doc = DocumentFactory .create ()
1034+ sp = doc .sessionpresentation_set .create (session = self .future ,rev = None )
1035+
1036+ url = urlreverse ('ietf.doc.views_doc.remove_sessionpresentation' ,kwargs = dict (name = 'no-such-doc' ,session_id = sp .session_id ))
1037+ response = self .client .get (url )
1038+ self .assertEqual (response .status_code , 404 )
1039+
1040+ url = urlreverse ('ietf.doc.views_doc.remove_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = 0 ))
1041+ response = self .client .get (url )
1042+ self .assertEqual (response .status_code , 404 )
1043+
1044+ url = urlreverse ('ietf.doc.views_doc.remove_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = sp .session_id ))
1045+ response = self .client .get (url )
1046+ self .assertEqual (response .status_code , 404 )
1047+
1048+ self .client .login (username = self .other_chair .user .username ,password = '%s+password' % self .other_chair .user .username )
1049+ response = self .client .get (url )
1050+ self .assertEqual (response .status_code , 404 )
1051+
1052+ self .client .login (username = self .group_chair .user .username ,password = '%s+password' % self .group_chair .user .username )
1053+ response = self .client .get (url )
1054+ self .assertEqual (response .status_code , 200 )
1055+
1056+ # Simulate the cancel button
1057+ response = self .client .post (url ,{})
1058+ self .assertEqual (response .status_code , 302 )
1059+ self .assertTrue (doc .sessionpresentation_set .filter (pk = sp .pk ).exists ())
1060+
1061+ self .assertEqual (1 ,doc .docevent_set .count ())
1062+ response = self .client .post (url ,{'remove_session' :'' })
1063+ self .assertEqual (response .status_code , 302 )
1064+ self .assertFalse (doc .sessionpresentation_set .filter (pk = sp .pk ).exists ())
1065+ self .assertEqual (2 ,doc .docevent_set .count ())
1066+
1067+ def test_remove_document_session_after_proceedings_closed (self ):
1068+ doc = DocumentFactory .create ()
1069+ sp = doc .sessionpresentation_set .create (session = self .past_cutoff ,rev = None )
1070+
1071+ url = urlreverse ('ietf.doc.views_doc.remove_sessionpresentation' ,kwargs = dict (name = doc .name ,session_id = sp .session_id ))
1072+ self .client .login (username = self .group_chair .user .username ,password = '%s+password' % self .group_chair .user .username )
1073+ response = self .client .get (url )
1074+ self .assertEqual (response .status_code , 404 )
1075+
1076+ self .client .login (username = 'secretary' ,password = 'secretary+password' )
1077+ response = self .client .get (url )
1078+ self .assertEqual (response .status_code , 200 )
1079+ q = PyQuery (response .content )
1080+ self .assertEqual (1 ,len (q (".alert-warning:contains('may affect published proceedings')" )))
0 commit comments