user_tests.rs

 1use chrono::Utc;
 2
 3use crate::{
 4    db::{Database, NewUserParams},
 5    test_both_dbs,
 6};
 7use std::sync::Arc;
 8
 9test_both_dbs!(
10    test_accepted_tos,
11    test_accepted_tos_postgres,
12    test_accepted_tos_sqlite
13);
14
15async fn test_accepted_tos(db: &Arc<Database>) {
16    let user_id = db
17        .create_user(
18            "user1@example.com",
19            false,
20            NewUserParams {
21                github_login: "user1".to_string(),
22                github_user_id: 1,
23            },
24        )
25        .await
26        .unwrap()
27        .user_id;
28
29    let user = db.get_user_by_id(user_id).await.unwrap().unwrap();
30    assert!(user.accepted_tos_at.is_none());
31
32    let accepted_tos_at = Utc::now().naive_utc();
33    db.set_user_accepted_tos_at(user_id, Some(accepted_tos_at))
34        .await
35        .unwrap();
36
37    let user = db.get_user_by_id(user_id).await.unwrap().unwrap();
38    assert!(user.accepted_tos_at.is_some());
39    assert_eq!(user.accepted_tos_at, Some(accepted_tos_at));
40
41    db.set_user_accepted_tos_at(user_id, None).await.unwrap();
42
43    let user = db.get_user_by_id(user_id).await.unwrap().unwrap();
44    assert!(user.accepted_tos_at.is_none());
45}