@@ -228,6 +228,44 @@ def find_event(t):
228228 self .assertEqual (r .status_code , 302 )
229229 self .assertTrue ("A new charter" in get_payload (outbox [- 3 ]))
230230
231+ def test_change_rg_state (self ):
232+
233+ irtf = Group .objects .get (acronym = 'irtf' )
234+
235+ group = GroupFactory (acronym = 'somerg' , type_id = 'rg' , state_id = 'proposed' ,list_email = 'somerg@ietf.org' ,parent = irtf )
236+ charter = CharterFactory (group = group )
237+
238+ url = urlreverse ('ietf.doc.views_charter.change_state' , kwargs = dict (name = charter .name ))
239+ login_testing_unauthorized (self , "secretary" , url )
240+
241+ s = State .objects .get (used = True , type = "charter" , slug = "intrev" )
242+ empty_outbox ()
243+
244+ r = self .client .post (url , dict (charter_state = str (s .pk ), message = "test message" ))
245+ self .assertEqual (r .status_code , 302 )
246+
247+ self .assertIn ("Internal RG Review" , outbox [- 3 ]['Subject' ])
248+ self .assertIn ("iab@" , outbox [- 3 ]['To' ])
249+ self .assertIn ("irsg@" , outbox [- 3 ]['To' ])
250+ body = get_payload (outbox [- 3 ])
251+ for word in ["A new IRTF RG" ,
252+ "Mailing list" , "somerg@ietf.org" ,
253+ "Charter" , "Milestones" ]:
254+
255+ self .assertIn (word , body )
256+
257+ self .assertIn ("state changed" , outbox [- 2 ]['Subject' ].lower ())
258+ self .assertIn ("iesg-secretary@" , outbox [- 2 ]['To' ])
259+ body = get_payload (outbox [- 2 ])
260+ for word in ["RG" , "Charter" , ]:
261+ self .assertIn (word , body )
262+
263+ self .assertIn ("State Update Notice" , outbox [- 1 ]['Subject' ])
264+ self .assertIn ("somerg-chairs@" , outbox [- 1 ]['To' ])
265+ body = get_payload (outbox [- 1 ])
266+ for word in ["State changed" , "Datatracker URL" , ]:
267+ self .assertIn (word , body )
268+
231269 def test_abandon_bof (self ):
232270 charter = CharterFactory (group__state_id = 'bof' ,group__type_id = 'wg' )
233271 url = urlreverse ('ietf.doc.views_charter.change_state' ,kwargs = {'name' :charter .name ,'option' :'abandon' })
@@ -575,6 +613,41 @@ def test_edit_review_announcement_text(self):
575613 self .assertTrue (group .name in charter .latest_event (WriteupDocEvent , type = "changed_review_announcement" ).text )
576614 self .assertTrue (charter .group .name in charter .latest_event (WriteupDocEvent , type = "changed_new_work_text" ).text )
577615
616+ def test_rg_edit_review_announcement_text (self ):
617+ irtf = Group .objects .get (acronym = 'irtf' )
618+ charter = CharterFactory (
619+ group__acronym = 'somerg' ,
620+ group__type_id = 'rg' ,
621+ group__list_email = 'somerg@ietf.org' ,
622+ group__parent = irtf ,
623+ )
624+ group = charter .group
625+
626+ url = urlreverse ('ietf.doc.views_charter.review_announcement_text' , kwargs = dict (name = charter .name ))
627+ self .client .logout ()
628+ login_testing_unauthorized (self , "secretary" , url )
629+
630+ by = Person .objects .get (user__username = "secretary" )
631+ (e1 , e2 ) = default_review_text (group , charter , by )
632+ announcement_text = e1 .text
633+ new_work_text = e2 .text
634+
635+ empty_outbox ()
636+ r = self .client .post (url , dict (
637+ announcement_text = announcement_text ,
638+ new_work_text = new_work_text ,
639+ send_both = "1" ))
640+ self .assertEqual (r .status_code , 302 )
641+ self .assertEqual (len (outbox ), 2 )
642+ self .assertTrue (all (['RG Review' in m ['Subject' ] for m in outbox ]))
643+ self .assertTrue ('ietf-announce@' in outbox [0 ]['To' ])
644+ self .assertTrue ('somerg@' in outbox [0 ]['Cc' ])
645+ self .assertTrue ('new-work@' in outbox [1 ]['To' ])
646+ self .assertIsNotNone (outbox [0 ]['Reply-To' ])
647+ self .assertIsNotNone (outbox [1 ]['Reply-To' ])
648+ self .assertTrue ('irsg@irtf.org' in outbox [0 ]['Reply-To' ])
649+ self .assertTrue ('irsg@irtf.org' in outbox [1 ]['Reply-To' ])
650+
578651 def test_edit_action_announcement_text (self ):
579652 area = GroupFactory (type_id = 'area' )
580653 RoleFactory (name_id = 'ad' ,group = area ,person = Person .objects .get (user__username = 'ad' ))
0 commit comments