Skip to content

Commit b47ff50

Browse files
authored
Merge pull request #9971 from Turbo87/user-creation
tests: Avoid `NewUser::create_or_update()` calls
2 parents fd9d5b5 + 0bbb63b commit b47ff50

File tree

6 files changed

+47
-28
lines changed

6 files changed

+47
-28
lines changed

src/rate_limiter.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ struct Bucket {
181181
#[cfg(test)]
182182
mod tests {
183183
use super::*;
184-
use crate::email::Emails;
184+
use crate::schema::users;
185185
use crate::test_util::*;
186186

187187
#[test]
@@ -647,13 +647,17 @@ mod tests {
647647

648648
fn new_user(conn: &mut impl Conn, gh_login: &str) -> QueryResult<i32> {
649649
use crate::models::NewUser;
650+
use diesel::RunQueryDsl;
650651

651652
let user = NewUser {
652653
gh_login,
653654
..NewUser::default()
654-
}
655-
.create_or_update(None, &Emails::new_in_memory(), conn)?;
656-
Ok(user.id)
655+
};
656+
657+
diesel::insert_into(users::table)
658+
.values(user)
659+
.returning(users::id)
660+
.get_result(conn)
657661
}
658662

659663
fn new_user_bucket(

src/tests/owners.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::{
1212
},
1313
};
1414

15+
use crate::schema::users;
1516
use chrono::{Duration, Utc};
1617
use diesel::prelude::*;
1718
use http::StatusCode;
@@ -724,15 +725,18 @@ async fn inactive_users_dont_get_invitations() {
724725
let invited_gh_login = "user_bar";
725726
let krate_name = "inactive_test";
726727

727-
NewUser {
728+
let user = NewUser {
728729
gh_id: -1,
729730
gh_login: invited_gh_login,
730731
name: None,
731732
gh_avatar: None,
732733
gh_access_token: "some random token",
733-
}
734-
.create_or_update(None, &app.as_inner().emails, &mut conn)
735-
.unwrap();
734+
};
735+
736+
diesel::insert_into(users::table)
737+
.values(user)
738+
.execute(&mut conn)
739+
.unwrap();
736740

737741
CrateBuilder::new(krate_name, owner.id).expect_build(&mut conn);
738742

src/tests/routes/crates/list.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::models::Category;
2-
use crate::schema::crates;
2+
use crate::schema::{crates, users};
33
use crate::tests::builders::{CrateBuilder, VersionBuilder};
44
use crate::tests::util::{RequestHelper, TestApp};
55
use crate::tests::{new_category, new_user};
@@ -21,11 +21,13 @@ async fn index() {
2121
assert_eq!(json.meta.total, 0);
2222
}
2323

24-
let u = new_user("foo")
25-
.create_or_update(None, &app.as_inner().emails, &mut conn)
24+
let user_id = insert_into(users::table)
25+
.values(new_user("foo"))
26+
.returning(users::id)
27+
.get_result(&mut conn)
2628
.unwrap();
2729

28-
let krate = CrateBuilder::new("fooindex", u.id).expect_build(&mut conn);
30+
let krate = CrateBuilder::new("fooindex", user_id).expect_build(&mut conn);
2931

3032
for json in search_both(&anon, "").await {
3133
assert_eq!(json.crates.len(), 1);

src/tests/routes/me/email_notifications.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::schema::crate_owners;
1+
use crate::schema::{crate_owners, users};
22
use crate::tests::builders::CrateBuilder;
33
use crate::tests::new_user;
44
use crate::tests::util::{RequestHelper, TestApp};
@@ -110,11 +110,13 @@ async fn test_update_email_notifications_not_owned() {
110110
let (app, _, user) = TestApp::init().with_user();
111111
let mut conn = app.db_conn();
112112

113-
let u = new_user("arbitrary_username")
114-
.create_or_update(None, &app.as_inner().emails, &mut conn)
113+
let user_id = diesel::insert_into(users::table)
114+
.values(new_user("arbitrary_username"))
115+
.returning(users::id)
116+
.get_result(&mut conn)
115117
.unwrap();
116118

117-
let not_my_crate = CrateBuilder::new("test_package", u.id).expect_build(&mut conn);
119+
let not_my_crate = CrateBuilder::new("test_package", user_id).expect_build(&mut conn);
118120

119121
user.update_email_notifications(vec![EmailNotificationsUpdate {
120122
id: not_my_crate.id,

src/tests/routes/users/read.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use crate::models::NewUser;
2+
use crate::schema::users;
23
use crate::tests::util::{RequestHelper, TestApp};
34
use crate::views::EncodablePublicUser;
5+
use diesel::RunQueryDsl;
46

57
#[derive(Deserialize)]
68
pub struct UserShowPublicResponse {
@@ -32,22 +34,26 @@ async fn show_latest_user_case_insensitively() {
3234
// should be used for uniquely identifying GitHub accounts whenever possible. For the
3335
// crates.io/user/:username pages, the best we can do is show the last crates.io account
3436
// created with that username.
35-
assert_ok!(NewUser::new(
37+
38+
let user1 = NewUser::new(
3639
1,
3740
"foobar",
3841
Some("I was first then deleted my github account"),
3942
None,
40-
"bar"
41-
)
42-
.create_or_update(None, &app.as_inner().emails, &mut conn));
43-
assert_ok!(NewUser::new(
43+
"bar",
44+
);
45+
46+
let user2 = NewUser::new(
4447
2,
4548
"FOOBAR",
4649
Some("I was second, I took the foobar username on github"),
4750
None,
48-
"bar"
49-
)
50-
.create_or_update(None, &app.as_inner().emails, &mut conn));
51+
"bar",
52+
);
53+
54+
assert_ok!(diesel::insert_into(users::table)
55+
.values(&vec![user1, user2])
56+
.execute(&mut conn));
5157

5258
let json: UserShowPublicResponse = anon.get("/api/v1/users/fOObAr").await.good();
5359
assert_eq!(

src/worker/jobs/downloads/update_metadata.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,15 @@ fn batch_update(batch_size: i64, conn: &mut impl Conn) -> QueryResult<i64> {
105105
#[cfg(test)]
106106
mod tests {
107107
use super::*;
108-
use crate::email::Emails;
109108
use crate::models::{Crate, NewCrate, NewUser, NewVersion, User, Version};
110-
use crate::schema::{crate_downloads, crates, versions};
109+
use crate::schema::{crate_downloads, crates, users, versions};
111110
use crate::test_util::test_db_connection;
112111

113112
fn user(conn: &mut impl Conn) -> User {
114-
NewUser::new(2, "login", None, None, "access_token")
115-
.create_or_update(None, &Emails::new_in_memory(), conn)
113+
let user = NewUser::new(2, "login", None, None, "access_token");
114+
diesel::insert_into(users::table)
115+
.values(user)
116+
.get_result(conn)
116117
.unwrap()
117118
}
118119

0 commit comments

Comments
 (0)