#[cfg(test)] mod tests { use crate::service::RoomService; use models::rooms::MessageContentType; #[test] fn test_parse_message_content_type_valid() { assert!(matches!( RoomService::parse_message_content_type(Some("text".into())).unwrap(), MessageContentType::Text )); assert!(matches!( RoomService::parse_message_content_type(Some("image".into())).unwrap(), MessageContentType::Image )); assert!(matches!( RoomService::parse_message_content_type(Some("audio".into())).unwrap(), MessageContentType::Audio )); assert!(matches!( RoomService::parse_message_content_type(Some("video".into())).unwrap(), MessageContentType::Video )); assert!(matches!( RoomService::parse_message_content_type(Some("file".into())).unwrap(), MessageContentType::File )); } #[test] fn test_parse_message_content_type_case_insensitive() { assert!(matches!( RoomService::parse_message_content_type(Some("TEXT".into())).unwrap(), MessageContentType::Text )); assert!(matches!( RoomService::parse_message_content_type(Some("Image".into())).unwrap(), MessageContentType::Image )); } #[test] fn test_parse_message_content_type_none_defaults_to_text() { assert!(matches!( RoomService::parse_message_content_type(None).unwrap(), MessageContentType::Text )); } #[test] fn test_parse_message_content_type_invalid() { assert!(RoomService::parse_message_content_type(Some("pdf".into())).is_err()); } #[test] fn test_validate_name_valid() { assert!(RoomService::validate_name("test-room", 100).is_ok()); assert!(RoomService::validate_name("a", 100).is_ok()); } #[test] fn test_validate_name_empty() { assert!(RoomService::validate_name("", 100).is_err()); assert!(RoomService::validate_name(" ", 100).is_err()); } #[test] fn test_validate_name_too_long() { let long = "x".repeat(101); assert!(RoomService::validate_name(&long, 100).is_err()); } #[test] fn test_validate_content_valid() { assert!(RoomService::validate_content("hello", 10000).is_ok()); } #[test] fn test_validate_content_empty() { assert!(RoomService::validate_content("", 10000).is_err()); assert!(RoomService::validate_content(" ", 10000).is_err()); } #[test] fn test_validate_content_too_long() { let long = "x".repeat(10001); assert!(RoomService::validate_content(&long, 10000).is_err()); } #[test] fn test_sanitize_content_removes_script_tag() { let input = ""; let result = RoomService::sanitize_content(input); assert!(!result.contains("