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            "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}