@@ -137,7 +137,12 @@ async fn notify_of_unapproval(repo: &RepositoryState, pr: &PullRequest) -> anyho
137
137
138
138
#[ cfg( test) ]
139
139
mod tests {
140
- use crate :: tests:: mocks:: { default_pr_number, BorsBuilder , Permissions , User , World } ;
140
+ use crate :: {
141
+ github:: PullRequestNumber ,
142
+ tests:: mocks:: {
143
+ default_pr_number, default_repo_name, BorsBuilder , BorsTester , Permissions , User , World ,
144
+ } ,
145
+ } ;
141
146
142
147
#[ sqlx:: test]
143
148
async fn default_approve ( pool : sqlx:: PgPool ) {
@@ -160,9 +165,13 @@ approve = ["+approved"]
160
165
User :: default_user( ) . name
161
166
) ,
162
167
) ;
163
- let repo = tester. default_repo ( ) ;
164
- let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
165
- pr. check_added_labels ( & [ "approved" ] ) ;
168
+
169
+ check_pr_approved_by (
170
+ & tester,
171
+ default_pr_number ( ) . into ( ) ,
172
+ & User :: default_user ( ) . name ,
173
+ )
174
+ . await ;
166
175
Ok ( tester)
167
176
} )
168
177
. await ;
@@ -191,9 +200,8 @@ approve = ["+approved"]
191
200
default_pr_number( ) ,
192
201
) ,
193
202
) ;
194
- let repo = tester. default_repo ( ) ;
195
- let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
196
- pr. check_added_labels ( & [ "approved" ] ) ;
203
+
204
+ check_pr_approved_by ( & tester, default_pr_number ( ) . into ( ) , approve_user) . await ;
197
205
Ok ( tester)
198
206
} )
199
207
. await ;
@@ -239,19 +247,48 @@ approve = ["+approved"]
239
247
User :: default_user( ) . name
240
248
) ,
241
249
) ;
242
- let repo = tester. default_repo ( ) ;
243
- let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
244
- pr. check_added_labels ( & [ "approved" ] ) ;
250
+ check_pr_approved_by (
251
+ & tester,
252
+ default_pr_number ( ) . into ( ) ,
253
+ & User :: default_user ( ) . name ,
254
+ )
255
+ . await ;
245
256
tester. post_comment ( "@bors r-" ) . await ?;
246
257
assert_eq ! (
247
258
tester. get_comment( ) . await ?,
248
259
format!( "Commit pr-{}-sha has been unapproved" , default_pr_number( ) ) ,
249
260
) ;
250
- let repo = tester. default_repo ( ) ;
251
- let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
252
- pr. check_removed_labels ( & [ "approved" ] ) ;
261
+ check_pr_unapproved ( & tester, default_pr_number ( ) . into ( ) ) . await ;
253
262
Ok ( tester)
254
263
} )
255
264
. await ;
256
265
}
266
+
267
+ async fn check_pr_approved_by (
268
+ tester : & BorsTester ,
269
+ pr_number : PullRequestNumber ,
270
+ approved_by : & str ,
271
+ ) {
272
+ let pr_in_db = tester
273
+ . db ( )
274
+ . get_or_create_pull_request ( & default_repo_name ( ) , pr_number)
275
+ . await
276
+ . unwrap ( ) ;
277
+ assert_eq ! ( pr_in_db. approved_by, Some ( approved_by. to_string( ) ) ) ;
278
+ let repo = tester. default_repo ( ) ;
279
+ let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
280
+ pr. check_added_labels ( & [ "approved" ] ) ;
281
+ }
282
+
283
+ async fn check_pr_unapproved ( tester : & BorsTester , pr_number : PullRequestNumber ) {
284
+ let pr_in_db = tester
285
+ . db ( )
286
+ . get_or_create_pull_request ( & default_repo_name ( ) , pr_number)
287
+ . await
288
+ . unwrap ( ) ;
289
+ assert_eq ! ( pr_in_db. approved_by, None ) ;
290
+ let repo = tester. default_repo ( ) ;
291
+ let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
292
+ pr. check_removed_labels ( & [ "approved" ] ) ;
293
+ }
257
294
}
0 commit comments