veza/veza-chat-server/src/repository/tests.rs
2025-12-03 20:33:26 +01:00

75 lines
2.4 KiB
Rust

#[cfg(test)]
mod tests {
use super::*;
use crate::repository::{MessageRepository, RoomRepository};
use sqlx::PgPool;
use uuid::Uuid;
async fn setup_test_db() -> PgPool {
// Pour les tests, utiliser une base de données de test
// Cette fonction doit être implémentée selon votre configuration de test
let database_url =
std::env::var("DATABASE_URL").expect("DATABASE_URL must be set for tests");
sqlx::PgPool::connect(&database_url)
.await
.expect("Failed to connect to test database")
}
#[tokio::test]
#[ignore] // Ignorer par défaut car nécessite une DB de test
async fn test_create_message() {
let pool = setup_test_db().await;
let repo = MessageRepository::new(pool.clone());
// Créer d'abord une room de test
let room_repo = RoomRepository::new(pool.clone());
let creator_id = Uuid::new_v4();
// Créer la room
let room = room_repo
.create(
Some("Test Room"),
Some("Test Description"),
"public",
false,
creator_id,
)
.await
.expect("Failed to create room");
let sender_id = creator_id;
let message = repo
.create(room.id, sender_id, "Hello world")
.await
.unwrap();
assert_eq!(message.content, "Hello world");
assert!(matches!(
message.message_type,
crate::models::MessageType::Text
));
}
#[tokio::test]
#[ignore] // Ignorer par défaut car nécessite une DB de test
async fn test_get_room_messages() {
let pool = setup_test_db().await;
let repo = MessageRepository::new(pool.clone());
// Créer une room d'abord
let room_repo = RoomRepository::new(pool.clone());
let creator_id = Uuid::new_v4();
let room = room_repo
.create(Some("Test Room"), None, "public", false, creator_id)
.await
.expect("Failed to create room");
let sender_id = creator_id;
repo.create(room.id, sender_id, "Message 1").await.unwrap();
repo.create(room.id, sender_id, "Message 2").await.unwrap();
let messages = repo.get_room_messages(room.id, 10).await.unwrap();
assert_eq!(messages.len(), 2);
}
}