pub mod models; pub mod chat_database; pub mod schema; #[cfg(test)] mod tests { use crate::{ chat_database::ChatDatabase, models::{ conversation::{Conversation, ConversationBuilder}, participant::Participant } }; #[test] fn test_database_init() { let _ = ChatDatabase::new_in_memory().unwrap(); } #[test] fn test_add_conversation() { let mut db = ChatDatabase::new_in_memory().unwrap(); let guid = "test"; let test_conversation = Conversation::builder() .guid(guid) .unread_count(2) .display_name("Test Conversation") .build(); db.insert_conversation(test_conversation.clone()).unwrap(); // Try to fetch with id now let conversation = db.get_conversation_by_guid(guid).unwrap().unwrap(); assert_eq!(conversation.guid, "test"); // Modify the conversation and update it let modified_conversation = test_conversation.into_builder() .display_name("Modified Conversation") .build(); db.insert_conversation(modified_conversation.clone()).unwrap(); // Make sure we still only have one conversation. let all_conversations = db.all_conversations().unwrap(); assert_eq!(all_conversations.len(), 1); // And make sure the display name was updated let conversation = db.get_conversation_by_guid(guid).unwrap().unwrap(); assert_eq!(conversation.display_name.unwrap(), "Modified Conversation"); } #[test] fn test_conversation_participants() { let mut db = ChatDatabase::new_in_memory().unwrap(); let participants: Vec = vec!["one".into(), "two".into()]; let guid = uuid::Uuid::new_v4().to_string(); let conversation = ConversationBuilder::new() .guid(&guid) .display_name("Test") .participants(participants.clone()) .build(); db.insert_conversation(conversation).unwrap(); let read_conversation = db.get_conversation_by_guid(&guid).unwrap().unwrap(); let read_participants = read_conversation.participants; assert_eq!(participants, read_participants); // Try making another conversation with the same participants let conversation = ConversationBuilder::new() .display_name("A Different Test") .participants(participants.clone()) .build(); db.insert_conversation(conversation).unwrap(); let read_conversation = db.get_conversation_by_guid(&guid).unwrap().unwrap(); let read_participants: Vec = read_conversation.participants; assert_eq!(participants, read_participants); } }