v0.2.3
RustBox CI / rustbox (push) Canceled after 0s

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-31 19:40:19 +01:00
1 parent 5b22add1f3
commit 2c98b8f925
38 files changed
+915 -87

No files matched your search

+1
View File
@@ -14,6 +14,7 @@ pub mod pgp;
pub mod pool;
pub mod response_templates;
pub mod search_outbox;
pub mod settings;
pub mod special_folders;
pub mod tags;
pub mod trusted_senders;
+97
View File
@@ -0,0 +1,97 @@
use crate::db::pool::Connection;
pub fn reset_all(conn: &mut Connection) -> Result<(), String> {
let transaction = conn
.transaction()
.map_err(|error| format!("Failed to start settings reset: {error}"))?;
for sql in [
"DELETE FROM folder_preferences",
"DELETE FROM special_folders",
"DELETE FROM display_preferences",
"DELETE FROM mail_preferences",
"DELETE FROM notification_preferences",
"DELETE FROM calendar_settings",
"DELETE FROM pgp_preferences",
"INSERT INTO display_preferences (id) VALUES (1)",
"INSERT INTO mail_preferences (id) VALUES (1)",
"INSERT INTO notification_preferences (id) VALUES (1)",
"INSERT INTO calendar_settings (id) VALUES (1)",
"INSERT INTO pgp_preferences (id) VALUES (1)",
] {
transaction
.execute(sql, [])
.map_err(|error| format!("Failed to reset settings: {error}"))?;
}
transaction
.commit()
.map_err(|error| format!("Failed to commit settings reset: {error}"))
}
#[cfg(test)]
mod tests {
use super::*;
use crate::db::display_preferences::{self, UpdateDisplayPreferences};
use crate::db::folder_preferences::{self, UpdateFolderPreferences};
use crate::db::folders;
use crate::db::mail_preferences::{self, UpdateMailPreferences};
use crate::db::pool::open_test_db;
#[test]
fn reset_restores_defaults_and_folder_overrides() {
let mut conn = open_test_db();
display_preferences::update_preferences(
&conn,
&UpdateDisplayPreferences {
theme: Some("light".to_string()),
..Default::default()
},
)
.unwrap();
mail_preferences::update_preferences(
&conn,
&UpdateMailPreferences {
messages_per_page: Some(100),
mark_read_delay_ms: None,
remote_images: None,
preferred_body: None,
thread_mode: None,
collapse_quotes: None,
show_snippets: None,
default_sort: None,
flagged_on_top: None,
sync_imap_keywords: None,
},
)
.unwrap();
folders::insert_folder_if_new(&conn, "INBOX", Some("/"), "").unwrap();
folder_preferences::update_preferences(
&conn,
"INBOX",
&UpdateFolderPreferences {
flagged_on_top: Some(true),
},
)
.unwrap();
reset_all(&mut conn).unwrap();
assert_eq!(
display_preferences::get_preferences(&conn).unwrap().theme,
"system"
);
assert_eq!(
mail_preferences::get_preferences(&conn)
.unwrap()
.messages_per_page,
50
);
assert_eq!(
folder_preferences::get_preferences(&conn, "INBOX")
.unwrap()
.flagged_on_top,
None
);
}
}