ratatui_toolkit/services/theme/persistence/
mod.rs1mod clear_saved_theme;
27mod default_config_dir;
28mod default_config_path;
29mod load_saved_theme;
30mod save_theme;
31mod theme_config;
32
33pub use clear_saved_theme::clear_saved_theme;
35pub use default_config_dir::default_config_dir;
36pub use default_config_path::default_config_path;
37pub use load_saved_theme::load_saved_theme;
38pub use save_theme::save_theme;
39pub use theme_config::ThemeConfig;
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44 use std::fs;
45 use tempfile::tempdir;
46
47 #[test]
48 fn test_save_and_load_theme() {
49 let dir = tempdir().unwrap();
50 let path = dir.path().join("theme.json");
51
52 save_theme("dracula", Some(path.clone())).unwrap();
53
54 let loaded = load_saved_theme(Some(path.clone()));
55 assert_eq!(loaded, Some("dracula".to_string()));
56 }
57
58 #[test]
59 fn test_load_nonexistent() {
60 let dir = tempdir().unwrap();
61 let path = dir.path().join("nonexistent.json");
62
63 let loaded = load_saved_theme(Some(path));
64 assert_eq!(loaded, None);
65 }
66
67 #[test]
68 fn test_clear_theme() {
69 let dir = tempdir().unwrap();
70 let path = dir.path().join("theme.json");
71
72 save_theme("ayu", Some(path.clone())).unwrap();
73 assert!(path.exists());
74
75 clear_saved_theme(Some(path.clone())).unwrap();
76 assert!(!path.exists());
77 }
78}