1use crate::{
2 db::{Database, NewUserParams},
3 test_both_dbs,
4};
5use std::sync::Arc;
6
7test_both_dbs!(
8 test_get_user_flags,
9 test_get_user_flags_postgres,
10 test_get_user_flags_sqlite
11);
12
13async fn test_get_user_flags(db: &Arc<Database>) {
14 let user_1 = db
15 .create_user(
16 "user1@example.com",
17 false,
18 NewUserParams {
19 github_login: "user1".to_string(),
20 github_user_id: 1,
21 },
22 )
23 .await
24 .unwrap()
25 .user_id;
26
27 let user_2 = db
28 .create_user(
29 "user2@example.com",
30 false,
31 NewUserParams {
32 github_login: "user2".to_string(),
33 github_user_id: 2,
34 },
35 )
36 .await
37 .unwrap()
38 .user_id;
39
40 const CHANNELS_ALPHA: &str = "channels-alpha";
41 const NEW_SEARCH: &str = "new-search";
42
43 let channels_flag = db.create_user_flag(CHANNELS_ALPHA).await.unwrap();
44 let search_flag = db.create_user_flag(NEW_SEARCH).await.unwrap();
45
46 db.add_user_flag(user_1, channels_flag).await.unwrap();
47 db.add_user_flag(user_1, search_flag).await.unwrap();
48
49 db.add_user_flag(user_2, channels_flag).await.unwrap();
50
51 let mut user_1_flags = db.get_user_flags(user_1).await.unwrap();
52 user_1_flags.sort();
53 assert_eq!(user_1_flags, &[CHANNELS_ALPHA, NEW_SEARCH]);
54
55 let mut user_2_flags = db.get_user_flags(user_2).await.unwrap();
56 user_2_flags.sort();
57 assert_eq!(user_2_flags, &[CHANNELS_ALPHA]);
58}