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 &format!("user1@example.com"),
17 false,
18 NewUserParams {
19 github_login: format!("user1"),
20 github_user_id: 1,
21 invite_count: 0,
22 },
23 )
24 .await
25 .unwrap()
26 .user_id;
27
28 let user_2 = db
29 .create_user(
30 &format!("user2@example.com"),
31 false,
32 NewUserParams {
33 github_login: format!("user2"),
34 github_user_id: 2,
35 invite_count: 0,
36 },
37 )
38 .await
39 .unwrap()
40 .user_id;
41
42 const CHANNELS_ALPHA: &'static str = "channels-alpha";
43 const NEW_SEARCH: &'static str = "new-search";
44
45 let channels_flag = db.create_user_flag(CHANNELS_ALPHA).await.unwrap();
46 let search_flag = db.create_user_flag(NEW_SEARCH).await.unwrap();
47
48 db.add_user_flag(user_1, channels_flag).await.unwrap();
49 db.add_user_flag(user_1, search_flag).await.unwrap();
50
51 db.add_user_flag(user_2, channels_flag).await.unwrap();
52
53 let mut user_1_flags = db.get_user_flags(user_1).await.unwrap();
54 user_1_flags.sort();
55 assert_eq!(user_1_flags, &[CHANNELS_ALPHA, NEW_SEARCH]);
56
57 let mut user_2_flags = db.get_user_flags(user_2).await.unwrap();
58 user_2_flags.sort();
59 assert_eq!(user_2_flags, &[CHANNELS_ALPHA]);
60}