Private
Public Access
1
0
Files
Kordophone/kordophone-db/src/lib.rs

87 lines
2.7 KiB
Rust
Raw Normal View History

2024-12-08 21:12:17 -08:00
pub mod models;
pub mod chat_database;
pub mod schema;
2024-12-08 21:12:17 -08:00
#[cfg(test)]
mod tests {
use crate::{
chat_database::ChatDatabase,
models::{
conversation::{Conversation, ConversationBuilder},
participant::Participant
}
};
2024-12-08 21:12:17 -08:00
#[test]
fn test_database_init() {
let _ = ChatDatabase::new_in_memory().unwrap();
}
#[test]
fn test_add_conversation() {
let mut db = ChatDatabase::new_in_memory().unwrap();
2024-12-08 21:12:17 -08:00
let guid = "test";
2024-12-08 21:12:17 -08:00
let test_conversation = Conversation::builder()
.guid(guid)
2024-12-08 21:12:17 -08:00
.unread_count(2)
.display_name("Test Conversation")
.build();
db.insert_conversation(test_conversation.clone()).unwrap();
2024-12-08 21:12:17 -08:00
// Try to fetch with id now
let conversation = db.get_conversation_by_guid(guid).unwrap().unwrap();
2024-12-08 21:12:17 -08:00
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();
2024-12-08 21:12:17 -08:00
assert_eq!(conversation.display_name.unwrap(), "Modified Conversation");
}
#[test]
fn test_conversation_participants() {
let mut db = ChatDatabase::new_in_memory().unwrap();
2024-12-08 21:12:17 -08:00
let participants: Vec<Participant> = vec!["one".into(), "two".into()];
let guid = uuid::Uuid::new_v4().to_string();
2024-12-08 21:12:17 -08:00
let conversation = ConversationBuilder::new()
.guid(&guid)
2024-12-08 21:12:17 -08:00
.display_name("Test")
.participants(participants.clone())
2024-12-08 21:12:17 -08:00
.build();
db.insert_conversation(conversation).unwrap();
2024-12-08 21:12:17 -08:00
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<Participant> = read_conversation.participants;
2024-12-08 21:12:17 -08:00
assert_eq!(participants, read_participants);
}
}