Skip to main content

elemental_shared/
lib.rs

1pub mod loader;
2pub mod migrator;
3pub mod persistor;
4pub mod profile;
5pub mod scope;
6pub mod store;
7pub mod version;
8
9#[cfg(test)]
10mod shared_test {
11    use crate::{migrator::NoMigrator, persistor::json_persistor, profile::Profile, scope::Scope};
12    use serde::{Deserialize, Serialize};
13
14    /// A sample configuration struct for testing purposes.
15    #[derive(Serialize, Deserialize, Clone)]
16    pub struct Config {
17        user: String,
18    }
19
20    impl Default for Config {
21        fn default() -> Self {
22            Config {
23                user: "Player".to_owned(),
24            }
25        }
26    }
27
28    type ProfileConfig = Profile<Config>;
29
30    #[tokio::test]
31    async fn test_profile() {
32        let loader = ProfileConfig::load(
33            NoMigrator,
34            json_persistor("foobar".to_string(), Scope::Dot),
35            0,
36        )
37        .await
38        .unwrap();
39
40        println!(
41            "{:?}",
42            loader.get(|profile| profile.config.user.clone()).await
43        ); // Player
44        loader
45            .set(|profile| profile.config.user = "NewPlayer".to_owned())
46            .await
47            .unwrap();
48        println!(
49            "{:?}",
50            loader.get(|profile| profile.config.user.clone()).await
51        ); // NewPlayer
52    }
53}