@@ -72,6 +72,20 @@ impl AssignCtx {
7272 self
7373 }
7474
75+ async fn set_previous_reviewers (
76+ mut self ,
77+ users : & [ & User ] ,
78+ ) -> Self {
79+ let mut db = self . test_ctx . db_client_mut ( ) ;
80+ for user in users {
81+ let mut state: IssueData < ' _ , Reviewers > =
82+ IssueData :: load ( & mut db, & self . issue , PREVIOUS_REVIEWERS_KEY ) . await . unwrap ( ) ;
83+ state. data . names . insert ( user. login . to_string ( ) ) ;
84+ state. save ( ) . await . unwrap ( ) ;
85+ }
86+ self
87+ }
88+
7589 async fn check (
7690 mut self ,
7791 names : & [ & str ] ,
@@ -528,3 +542,46 @@ async fn vacation() {
528542 } )
529543 . await ;
530544}
545+
546+ #[ tokio:: test]
547+ async fn previous_reviewers_ignore_in_team_success ( ) {
548+ let teams = toml:: toml!( compiler = [ "martin" , "jyn514" ] ) ;
549+ let config = toml:: toml!( [ assign] ) ;
550+ run_db_test ( |ctx| async move {
551+ let user = user ( "martin" , 1 ) ;
552+ basic_test ( ctx, config, issue ( ) . call ( ) )
553+ . teams ( & teams)
554+ . set_previous_reviewers ( & [ & user] )
555+ . await . check ( & [ "compiler" ] , Ok ( & [ "jyn514" ] ) )
556+ . await
557+ } ) . await ;
558+ }
559+
560+ #[ tokio:: test]
561+ async fn previous_reviewers_ignore_in_team_failed ( ) {
562+ let teams = toml:: toml!( compiler = [ "martin" , "jyn514" ] ) ;
563+ let config = toml:: toml!( [ assign] ) ;
564+ run_db_test ( |ctx| async move {
565+ let user1 = user ( "martin" , 1 ) ;
566+ let user2 = user ( "jyn514" , 2 ) ;
567+ basic_test ( ctx, config, issue ( ) . call ( ) )
568+ . teams ( & teams)
569+ . set_previous_reviewers ( & [ & user1, & user2] )
570+ . await . check ( & [ "compiler" ] , Err ( FindReviewerError :: NoReviewer { initial : vec ! [ "compiler" . to_string( ) ] } ) )
571+ . await
572+ } ) . await
573+ }
574+
575+ #[ tokio:: test]
576+ async fn previous_reviewers_direct_assignee ( ) {
577+ let teams = toml:: toml!( compiler = [ "martin" , "jyn514" ] ) ;
578+ let config = toml:: toml!( [ assign] ) ;
579+ run_db_test ( |ctx| async move {
580+ let user1 = user ( "martin" , 1 ) ;
581+ let user2 = user ( "jyn514" , 2 ) ;
582+ basic_test ( ctx, config, issue ( ) . call ( ) )
583+ . teams ( & teams)
584+ . set_previous_reviewers ( & [ & user1, & user2] )
585+ . await . check ( & [ "jyn514" ] , Ok ( & [ "jyn514" ] ) ) . await
586+ } ) . await
587+ }
0 commit comments