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