feature_flag_tests.rs

 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}