#[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("