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}