Files
baibot-withmcp/src/conversation/llm/tests.rs

101 lines
3.6 KiB
Rust
Raw Normal View History

use mxlink::matrix_sdk::ruma::OwnedUserId;
2024-09-12 13:44:06 +03:00
use crate::utils::status::create_error_message_text;
use crate::utils::text_to_speech::create_transcribed_message_text;
use super::*;
#[test]
fn test_messages_by_the_bot_are_identified_correctly() {
let bot_user_id =
OwnedUserId::try_from("@bot:example.com").expect("Failed to parse bot user ID");
2024-09-12 13:44:06 +03:00
let matrix_message = super::super::matrix::MatrixMessage {
sender_id: bot_user_id.to_owned(),
content: super::super::matrix::MatrixMessageContent::Text("Hello!".to_owned()),
mentioned_users: vec![],
timestamp: chrono::Utc::now(),
2024-09-12 13:44:06 +03:00
};
let llm_message = convert_matrix_message_to_llm_message(&matrix_message, &bot_user_id).unwrap();
2024-09-12 13:44:06 +03:00
assert_eq!(llm_message.author, Author::Assistant);
2025-05-10 11:47:50 +03:00
assert_eq!(
llm_message.content,
MessageContent::Text("Hello!".to_string())
);
2024-09-12 13:44:06 +03:00
}
#[test]
2025-05-10 11:47:50 +03:00
fn test_notice_messages_by_bot_with_speech_to_text_prefix_are_cleaned_up_and_considered_sent_by_user()
{
let bot_user_id =
OwnedUserId::try_from("@bot:example.com").expect("Failed to parse bot user ID");
2024-09-12 13:44:06 +03:00
let source_message_text = "Hello!";
let message_text = create_transcribed_message_text(source_message_text);
assert_ne!(source_message_text, message_text);
let matrix_message = super::super::matrix::MatrixMessage {
sender_id: bot_user_id.to_owned(),
content: super::super::matrix::MatrixMessageContent::Notice(message_text),
mentioned_users: vec![],
timestamp: chrono::Utc::now(),
2024-09-12 13:44:06 +03:00
};
let llm_message = convert_matrix_message_to_llm_message(&matrix_message, &bot_user_id).unwrap();
2024-09-12 13:44:06 +03:00
assert_eq!(llm_message.author, Author::User);
2025-05-10 11:47:50 +03:00
assert_eq!(
llm_message.content,
MessageContent::Text(source_message_text.to_string())
);
2024-09-12 13:44:06 +03:00
}
#[test]
fn test_notice_error_messages_by_bot_are_ignored() {
let bot_user_id =
OwnedUserId::try_from("@bot:example.com").expect("Failed to parse bot user ID");
2024-09-12 13:44:06 +03:00
let source_message_text = "Some error happened";
let message_text = create_error_message_text(source_message_text);
assert_ne!(source_message_text, message_text);
let matrix_message = super::super::matrix::MatrixMessage {
sender_id: bot_user_id.to_owned(),
content: super::super::matrix::MatrixMessageContent::Notice(message_text),
mentioned_users: vec![],
timestamp: chrono::Utc::now(),
2024-09-12 13:44:06 +03:00
};
let llm_message = convert_matrix_message_to_llm_message(&matrix_message, &bot_user_id);
2024-09-12 13:44:06 +03:00
assert!(llm_message.is_none());
}
#[test]
fn test_other_notice_messages_by_the_bot_are_ignored() {
// Also see `test_notice_error_messages_by_bot_are_ignored()`.
// That one passes accidentally, because we ignore all messages by the bot that are notices
// (except for speech-to-text-created transcriptions - see `test_notice_messages_by_bot_with_speech_to_text_prefix_are_cleaned_up_and_considered_sent_by_user()`).
// This test is to make sure that we don't accidentally start accepting other notice messages.
let bot_user_id =
OwnedUserId::try_from("@bot:example.com").expect("Failed to parse bot user ID");
2024-09-12 13:44:06 +03:00
let message_text = "Something something";
let matrix_message = super::super::matrix::MatrixMessage {
sender_id: bot_user_id.to_owned(),
content: super::super::matrix::MatrixMessageContent::Notice(message_text.to_owned()),
mentioned_users: vec![],
timestamp: chrono::Utc::now(),
2024-09-12 13:44:06 +03:00
};
let llm_message = convert_matrix_message_to_llm_message(&matrix_message, &bot_user_id);
2024-09-12 13:44:06 +03:00
assert!(llm_message.is_none());
}