Skip to content

Commit 82fce1b

Browse files
chore: minor code refactor in tests for report_last_login
1 parent 643a1a0 commit 82fce1b

File tree

3 files changed

+33
-24
lines changed

3 files changed

+33
-24
lines changed

server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
name = "server"
33
version = "0.1.0"
44
edition = "2024"
5+
default-run = "server"
56

67
[dependencies]
78
axum = { version = "0.8.7", features = ["json"] }

server/src/db/user_repo.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,18 @@ impl<'a> UserRepository<'a> {
243243
.await?;
244244
Ok(())
245245
}
246+
247+
#[cfg(test)]
248+
pub async fn get_last_login_at(
249+
&self,
250+
pubkey: &str,
251+
) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
252+
let last_login = sqlx::query_scalar("SELECT last_login_at FROM users WHERE pubkey = $1")
253+
.bind(pubkey)
254+
.fetch_one(self.pool)
255+
.await?;
256+
Ok(last_login)
257+
}
246258
}
247259

248260
fn is_lightning_address_conflict(error: &sqlx::Error) -> bool {

server/src/tests/gated_user_tests.rs

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -698,12 +698,11 @@ async fn test_report_last_login() {
698698
tx.commit().await.unwrap();
699699

700700
// Verify last_login_at is initially NULL
701-
let initial_last_login: Option<chrono::DateTime<chrono::Utc>> =
702-
sqlx::query_scalar("SELECT last_login_at FROM users WHERE pubkey = $1")
703-
.bind(&user.pubkey().to_string())
704-
.fetch_one(&app_state.db_pool)
705-
.await
706-
.unwrap();
701+
let user_repo = UserRepository::new(&app_state.db_pool);
702+
let initial_last_login = user_repo
703+
.get_last_login_at(&user.pubkey().to_string())
704+
.await
705+
.unwrap();
707706
assert!(initial_last_login.is_none());
708707

709708
let k1 = make_k1(&app_state.k1_cache)
@@ -729,12 +728,10 @@ async fn test_report_last_login() {
729728
assert_eq!(response.status(), StatusCode::OK);
730729

731730
// Verify last_login_at is now set
732-
let updated_last_login: Option<chrono::DateTime<chrono::Utc>> =
733-
sqlx::query_scalar("SELECT last_login_at FROM users WHERE pubkey = $1")
734-
.bind(&user.pubkey().to_string())
735-
.fetch_one(&app_state.db_pool)
736-
.await
737-
.unwrap();
731+
let updated_last_login = user_repo
732+
.get_last_login_at(&user.pubkey().to_string())
733+
.await
734+
.unwrap();
738735
assert!(updated_last_login.is_some());
739736
}
740737

@@ -780,12 +777,12 @@ async fn test_report_last_login_updates_timestamp() {
780777

781778
assert_eq!(response.status(), StatusCode::OK);
782779

783-
let first_login: chrono::DateTime<chrono::Utc> =
784-
sqlx::query_scalar("SELECT last_login_at FROM users WHERE pubkey = $1")
785-
.bind(&user.pubkey().to_string())
786-
.fetch_one(&app_state.db_pool)
787-
.await
788-
.unwrap();
780+
let user_repo = UserRepository::new(&app_state.db_pool);
781+
let first_login = user_repo
782+
.get_last_login_at(&user.pubkey().to_string())
783+
.await
784+
.unwrap()
785+
.unwrap();
789786

790787
// Small delay to ensure timestamp difference
791788
tokio::time::sleep(tokio::time::Duration::from_millis(10)).await;
@@ -813,12 +810,11 @@ async fn test_report_last_login_updates_timestamp() {
813810

814811
assert_eq!(response2.status(), StatusCode::OK);
815812

816-
let second_login: chrono::DateTime<chrono::Utc> =
817-
sqlx::query_scalar("SELECT last_login_at FROM users WHERE pubkey = $1")
818-
.bind(&user.pubkey().to_string())
819-
.fetch_one(&app_state.db_pool)
820-
.await
821-
.unwrap();
813+
let second_login = user_repo
814+
.get_last_login_at(&user.pubkey().to_string())
815+
.await
816+
.unwrap()
817+
.unwrap();
822818

823819
assert!(second_login > first_login);
824820
}

0 commit comments

Comments
 (0)