Skip to content

Commit 42056cf

Browse files
test: test db status
1 parent a875cb6 commit 42056cf

File tree

3 files changed

+52
-14
lines changed

3 files changed

+52
-14
lines changed

src/bors/handlers/review.rs

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,12 @@ async fn notify_of_unapproval(repo: &RepositoryState, pr: &PullRequest) -> anyho
137137

138138
#[cfg(test)]
139139
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+
};
141146

142147
#[sqlx::test]
143148
async fn default_approve(pool: sqlx::PgPool) {
@@ -160,9 +165,13 @@ approve = ["+approved"]
160165
User::default_user().name
161166
),
162167
);
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;
166175
Ok(tester)
167176
})
168177
.await;
@@ -191,9 +200,8 @@ approve = ["+approved"]
191200
default_pr_number(),
192201
),
193202
);
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;
197205
Ok(tester)
198206
})
199207
.await;
@@ -239,19 +247,48 @@ approve = ["+approved"]
239247
User::default_user().name
240248
),
241249
);
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;
245256
tester.post_comment("@bors r-").await?;
246257
assert_eq!(
247258
tester.get_comment().await?,
248259
format!("Commit pr-{}-sha has been unapproved", default_pr_number()),
249260
);
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;
253262
Ok(tester)
254263
})
255264
.await;
256265
}
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+
}
257294
}

src/tests/mocks/bors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ impl BorsTester {
135135
self.db.clone()
136136
}
137137

138-
pub fn default_repo(&mut self) -> Arc<Mutex<Repo>> {
138+
pub fn default_repo(&self) -> Arc<Mutex<Repo>> {
139139
self.world.get_repo(default_repo_name())
140140
}
141141

src/tests/mocks/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use crate::TeamApiClient;
1414

1515
pub use bors::run_test;
1616
pub use bors::BorsBuilder;
17+
pub use bors::BorsTester;
1718
pub use comment::Comment;
1819
pub use permissions::Permissions;
1920
pub use pull_request::default_pr_number;

0 commit comments

Comments
 (0)