use crate::channels::telegram::handler::build_group_history_record;
use teloxide::types::{Message, Update, UpdateKind};
fn extract_message(json: &str) -> Message {
let u: Update = serde_json::from_str(json).expect("parse update");
match u.kind {
UpdateKind::Message(m) => m,
other => panic!("expected a message update, got {other:?}"),
}
}
#[test]
fn bot_group_message_is_captured_for_history() {
let json = serde_json::json!({
"update_id": 1,
"message": {
"message_id": 42,
"date": 1750000000,
"chat": {"id": -1001234567i64, "type": "supergroup", "title": "Team Room"},
"from": {"id": 999888, "is_bot": true, "first_name": "Crabs"},
"text": "Quick data point on phantom tool calls"
}
})
.to_string();
let msg = extract_message(&json);
let user = msg.from.as_ref().expect("sender present");
assert!(user.is_bot, "sender is a bot in this fixture");
let rec = build_group_history_record(&msg, user).expect("a record must be built");
assert_eq!(rec.channel, "telegram");
assert_eq!(rec.content, "Quick data point on phantom tool calls");
assert_eq!(rec.sender_id, "999888");
assert_eq!(rec.sender_name, "Crabs");
assert_eq!(rec.platform_message_id.as_deref(), Some("42"));
assert_eq!(rec.channel_chat_id, "-1001234567");
}
#[test]
fn caption_only_message_is_captured() {
let json = serde_json::json!({
"update_id": 2,
"message": {
"message_id": 43,
"date": 1750000000,
"chat": {"id": -100i64, "type": "supergroup", "title": "g"},
"from": {"id": 5, "is_bot": false, "first_name": "Adi"},
"photo": [{"file_id": "x", "file_unique_id": "y", "width": 1, "height": 1}],
"caption": "look at this"
}
})
.to_string();
let msg = extract_message(&json);
let user = msg.from.as_ref().expect("sender present");
let rec = build_group_history_record(&msg, user).expect("record from caption");
assert_eq!(rec.content, "look at this");
assert_eq!(rec.sender_name, "Adi");
}
#[test]
fn empty_message_yields_no_record() {
let json = serde_json::json!({
"update_id": 3,
"message": {
"message_id": 44,
"date": 1750000000,
"chat": {"id": -100i64, "type": "supergroup", "title": "g"},
"from": {"id": 5, "is_bot": true, "first_name": "Crabs"}
}
})
.to_string();
let msg = extract_message(&json);
let user = msg.from.as_ref().expect("sender present");
assert!(
build_group_history_record(&msg, user).is_none(),
"an empty message must not create a history row"
);
}