2424from ietf .utils .test_data import make_test_data , make_review_data , create_person
2525from ietf .utils .test_utils import login_testing_unauthorized , unicontent , reload_db_objects
2626from ietf .utils .mail import outbox , empty_outbox
27+ from ietf .person .factories import PersonFactory
2728
2829class ReviewTests (TestCase ):
2930 def setUp (self ):
@@ -180,27 +181,29 @@ def get_skip_next(person):
180181 or ReviewerSettings (team = team ))
181182 return settings .skip_next
182183
183- possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [0 ].pk )
184+ possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [0 ].pk , add_skip = False )
184185 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [1 ])
185186 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
186187 self .assertEqual (get_skip_next (reviewers [1 ]), 0 )
187188
188- possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [1 ].pk )
189+ possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [1 ].pk , add_skip = True )
189190 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [2 ])
191+ self .assertEqual (get_skip_next (reviewers [1 ]), 1 )
192+ self .assertEqual (get_skip_next (reviewers [2 ]), 0 )
190193
191194 # skip reviewer 2
192- possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [3 ].pk )
195+ possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [3 ].pk , add_skip = True )
193196 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [2 ])
194197 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
195- self .assertEqual (get_skip_next (reviewers [1 ]), 0 )
198+ self .assertEqual (get_skip_next (reviewers [1 ]), 1 )
196199 self .assertEqual (get_skip_next (reviewers [2 ]), 0 )
197200 self .assertEqual (get_skip_next (reviewers [3 ]), 1 )
198201
199202 # pick reviewer 2, use up reviewer 3's skip_next
200- possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [2 ].pk )
203+ possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [2 ].pk , add_skip = False )
201204 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [4 ])
202205 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
203- self .assertEqual (get_skip_next (reviewers [1 ]), 0 )
206+ self .assertEqual (get_skip_next (reviewers [1 ]), 1 )
204207 self .assertEqual (get_skip_next (reviewers [2 ]), 0 )
205208 self .assertEqual (get_skip_next (reviewers [3 ]), 0 )
206209 self .assertEqual (get_skip_next (reviewers [4 ]), 0 )
@@ -209,7 +212,7 @@ def get_skip_next(person):
209212 possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [4 ].pk )
210213 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [0 ])
211214 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
212- self .assertEqual (get_skip_next (reviewers [1 ]), 0 )
215+ self .assertEqual (get_skip_next (reviewers [1 ]), 1 )
213216 self .assertEqual (get_skip_next (reviewers [2 ]), 0 )
214217 self .assertEqual (get_skip_next (reviewers [3 ]), 0 )
215218 self .assertEqual (get_skip_next (reviewers [4 ]), 0 )
@@ -220,13 +223,13 @@ def get_skip_next(person):
220223 possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [0 ].pk )
221224 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [2 ])
222225 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
223- self .assertEqual (get_skip_next (reviewers [1 ]), 0 )
226+ self .assertEqual (get_skip_next (reviewers [1 ]), 1 ) # don't consume that skip while the reviewer is unavailable
224227 self .assertEqual (get_skip_next (reviewers [2 ]), 0 )
225228 self .assertEqual (get_skip_next (reviewers [3 ]), 0 )
226229 self .assertEqual (get_skip_next (reviewers [4 ]), 0 )
227230
228231 # pick unavailable anyway
229- possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [1 ].pk )
232+ possibly_advance_next_reviewer_for_team (team , assigned_review_to_person_id = reviewers [1 ].pk , add_skip = False )
230233 self .assertEqual (NextReviewerInTeam .objects .get (team = team ).next_reviewer , reviewers [2 ])
231234 self .assertEqual (get_skip_next (reviewers [0 ]), 0 )
232235 self .assertEqual (get_skip_next (reviewers [1 ]), 1 )
@@ -283,6 +286,10 @@ def test_assign_reviewer(self):
283286 reviewer_settings .skip_next = 1
284287 reviewer_settings .save ()
285288
289+ # Need one more person in review team one so we can test incrementing skip_count without immediately decrementing it
290+ another_reviewer = PersonFactory .create ()
291+ another_reviewer .role_set .create (name_id = 'reviewer' , email = another_reviewer .email (), group = review_req .team )
292+
286293 UnavailablePeriod .objects .create (
287294 team = review_req .team ,
288295 person = reviewer_email .person ,
@@ -345,7 +352,7 @@ def test_assign_reviewer(self):
345352 review_req .state = ReviewRequestStateName .objects .get (slug = "accepted" )
346353 review_req .save ()
347354 reviewer = Email .objects .filter (role__name = "reviewer" , role__group = review_req .team , person = rotation_list [1 ]).first ()
348- r = self .client .post (assign_url , { "action" : "assign" , "reviewer" : reviewer .pk })
355+ r = self .client .post (assign_url , { "action" : "assign" , "reviewer" : reviewer .pk , "add_skip" : 1 })
349356 self .assertEqual (r .status_code , 302 )
350357
351358 review_req = reload_db_objects (review_req )
@@ -354,6 +361,7 @@ def test_assign_reviewer(self):
354361 self .assertEqual (len (outbox ), 2 )
355362 self .assertTrue ("cancelled your assignment" in outbox [0 ].get_payload (decode = True ).decode ("utf-8" ))
356363 self .assertTrue ("assigned" in outbox [1 ].get_payload (decode = True ).decode ("utf-8" ))
364+ self .assertEqual (ReviewerSettings .objects .get (person = reviewer .person ).skip_next , 1 )
357365
358366 def test_accept_reviewer_assignment (self ):
359367 doc = make_test_data ()
0 commit comments