fixes
This commit is contained in:
@@ -96,12 +96,12 @@ fn format_message_for_test(msg: &tele_tui::tdlib::MessageInfo) -> String {
|
||||
let mut result = String::new();
|
||||
|
||||
// Добавляем forward контекст если есть
|
||||
if let Some(forward) = &msg.forward_from {
|
||||
if let Some(forward) = &msg.forward_from() {
|
||||
result.push_str(&format!("↪ Переслано от {}\n", forward.sender_name));
|
||||
}
|
||||
|
||||
// Добавляем reply контекст если есть
|
||||
if let Some(reply) = &msg.reply_to {
|
||||
if let Some(reply) = &msg.reply_to() {
|
||||
result.push_str(&format!("┌ {}: {}\n", reply.sender_name, reply.text));
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ mod helpers;
|
||||
|
||||
use helpers::fake_tdclient::FakeTdClient;
|
||||
use helpers::test_data::TestMessageBuilder;
|
||||
use tele_tui::types::MessageId;
|
||||
|
||||
/// Test: Удаление сообщения убирает его из списка
|
||||
#[test]
|
||||
@@ -51,8 +52,8 @@ fn test_delete_multiple_messages() {
|
||||
// Проверяем что осталось только второе сообщение
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].id, msg2_id);
|
||||
assert_eq!(messages[0].content.text(), "Message 2");
|
||||
assert_eq!(messages[0].id(), MessageId::new(msg2_id));
|
||||
assert_eq!(messages[0].content.text, "Message 2");
|
||||
}
|
||||
|
||||
/// Test: Удаление только своих сообщений (проверка через can_be_deleted_for_all_users)
|
||||
@@ -74,12 +75,12 @@ fn test_can_only_delete_own_messages_for_all() {
|
||||
|
||||
// Проверяем флаги удаления
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages[0].can_be_deleted_for_all_users, true); // Наше
|
||||
assert_eq!(messages[1].can_be_deleted_for_all_users, false); // Чужое
|
||||
assert_eq!(messages[0].can_be_deleted_for_all_users(), true); // Наше
|
||||
assert_eq!(messages[1].can_be_deleted_for_all_users(), false); // Чужое
|
||||
|
||||
// Оба можно удалить для себя
|
||||
assert_eq!(messages[0].can_be_deleted_only_for_self, true);
|
||||
assert_eq!(messages[1].can_be_deleted_only_for_self, true);
|
||||
assert_eq!(messages[0].can_be_deleted_only_for_self(), true);
|
||||
assert_eq!(messages[1].can_be_deleted_only_for_self(), true);
|
||||
}
|
||||
|
||||
/// Test: Удаление несуществующего сообщения (ничего не происходит)
|
||||
@@ -102,7 +103,7 @@ fn test_delete_nonexistent_message() {
|
||||
// Но существующее сообщение осталось
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].id, msg_id);
|
||||
assert_eq!(messages[0].id(), MessageId::new(msg_id));
|
||||
}
|
||||
|
||||
/// Test: Подтверждение удаления (симуляция модалки)
|
||||
@@ -144,6 +145,6 @@ fn test_cancel_delete_keeps_message() {
|
||||
|
||||
// Сообщение на месте
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages[0].id, msg_id);
|
||||
assert_eq!(messages[0].content.text(), "Keep me");
|
||||
assert_eq!(messages[0].id(), MessageId::new(msg_id));
|
||||
assert_eq!(messages[0].content.text, "Keep me");
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ fn test_edit_message_changes_text() {
|
||||
// Проверяем что текст сообщения изменился
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].content.text(), "Edited text");
|
||||
assert_eq!(messages[0].content.text, "Edited text");
|
||||
}
|
||||
|
||||
/// Test: Редактирование устанавливает edit_date
|
||||
@@ -37,16 +37,16 @@ fn test_edit_message_sets_edit_date() {
|
||||
|
||||
// Получаем дату до редактирования
|
||||
let messages_before = client.get_messages(123);
|
||||
let date_before = messages_before[0].date;
|
||||
assert_eq!(messages_before[0].edit_date, 0); // Не редактировалось
|
||||
let date_before = messages_before[0].date();
|
||||
assert_eq!(messages_before[0].edit_date(), 0); // Не редактировалось
|
||||
|
||||
// Редактируем сообщение
|
||||
client.edit_message(123, msg_id, "Edited".to_string());
|
||||
|
||||
// Проверяем что edit_date установлена
|
||||
let messages_after = client.get_messages(123);
|
||||
assert!(messages_after[0].edit_date > 0);
|
||||
assert!(messages_after[0].edit_date > date_before); // edit_date после date
|
||||
assert!(messages_after[0].edit_date() > 0);
|
||||
assert!(messages_after[0].edit_date() > date_before); // edit_date после date
|
||||
}
|
||||
|
||||
/// Test: Редактирование только своих сообщений (проверка через can_be_edited)
|
||||
@@ -68,8 +68,8 @@ fn test_can_only_edit_own_messages() {
|
||||
|
||||
// Проверяем флаги
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages[0].can_be_edited, true); // Наше сообщение
|
||||
assert_eq!(messages[1].can_be_edited, false); // Чужое сообщение
|
||||
assert_eq!(messages[0].can_be_edited(), true); // Наше сообщение
|
||||
assert_eq!(messages[1].can_be_edited(), false); // Чужое сообщение
|
||||
}
|
||||
|
||||
/// Test: Множественные редактирования одного сообщения
|
||||
@@ -97,7 +97,7 @@ fn test_multiple_edits_of_same_message() {
|
||||
// Проверяем что сообщение содержит последнюю версию
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].content.text(), "Final version");
|
||||
assert_eq!(messages[0].content.text, "Final version");
|
||||
}
|
||||
|
||||
/// Test: Редактирование несуществующего сообщения (ничего не происходит)
|
||||
@@ -136,14 +136,14 @@ fn test_edit_history_tracking() {
|
||||
|
||||
// Проверяем что изменилось
|
||||
let messages_edited = client.get_messages(123);
|
||||
assert_eq!(messages_edited[0].content.text(), "Edited");
|
||||
assert_eq!(messages_edited[0].content.text, "Edited");
|
||||
|
||||
// Можем "отменить" редактирование вернув original
|
||||
client.edit_message(123, msg_id, original);
|
||||
|
||||
// Проверяем что вернулось
|
||||
let messages_restored = client.get_messages(123);
|
||||
assert_eq!(messages_restored[0].content.text(), "Original");
|
||||
assert_eq!(messages_restored[0].content.text, "Original");
|
||||
|
||||
// История показывает 2 редактирования
|
||||
assert_eq!(client.edited_messages().len(), 2);
|
||||
|
||||
@@ -312,7 +312,7 @@ mod tests {
|
||||
.selected_chat(123)
|
||||
.build();
|
||||
|
||||
assert_eq!(app.selected_chat_id, Some(123));
|
||||
assert_eq!(app.selected_chat_id, Some(ChatId::new(123)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -323,7 +323,7 @@ mod tests {
|
||||
.build();
|
||||
|
||||
assert!(app.is_editing());
|
||||
assert_eq!(app.chat_state.selected_message_id(), Some(999));
|
||||
assert_eq!(app.chat_state.selected_message_id(), Some(MessageId::new(999)));
|
||||
assert_eq!(app.message_input, "Edited text");
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use std::collections::HashMap;
|
||||
use tele_tui::tdlib::{ChatInfo, FolderInfo, MessageInfo, NetworkState};
|
||||
use tele_tui::types::MessageId;
|
||||
|
||||
/// Упрощённый mock TDLib клиента для тестов
|
||||
#[derive(Clone)]
|
||||
@@ -124,22 +125,22 @@ impl FakeTdClient {
|
||||
.push(SentMessage { chat_id, text: text.clone(), reply_to });
|
||||
|
||||
// Добавляем сообщение в список сообщений чата
|
||||
let message = MessageInfo {
|
||||
id: message_id,
|
||||
sender_name: "You".to_string(),
|
||||
is_outgoing: true,
|
||||
content: text,
|
||||
entities: vec![],
|
||||
date: 1640000000,
|
||||
edit_date: 0,
|
||||
is_read: true,
|
||||
can_be_edited: true,
|
||||
can_be_deleted_only_for_self: true,
|
||||
can_be_deleted_for_all_users: true,
|
||||
reply_to: None,
|
||||
forward_from: None,
|
||||
reactions: vec![],
|
||||
};
|
||||
let message = MessageInfo::new(
|
||||
MessageId::new(message_id),
|
||||
"You".to_string(),
|
||||
true, // is_outgoing
|
||||
text,
|
||||
vec![], // entities
|
||||
1640000000, // date
|
||||
0, // edit_date
|
||||
true, // is_read
|
||||
true, // can_be_edited
|
||||
true, // can_be_deleted_only_for_self
|
||||
true, // can_be_deleted_for_all_users
|
||||
None, // reply_to
|
||||
None, // forward_from
|
||||
vec![], // reactions
|
||||
);
|
||||
|
||||
self.messages
|
||||
.entry(chat_id)
|
||||
@@ -156,7 +157,7 @@ impl FakeTdClient {
|
||||
|
||||
// Обновляем сообщение в списке
|
||||
if let Some(messages) = self.messages.get_mut(&chat_id) {
|
||||
if let Some(msg) = messages.iter_mut().find(|m| m.id() == message_id) {
|
||||
if let Some(msg) = messages.iter_mut().find(|m| m.id().as_i64() == message_id) {
|
||||
msg.content.text = new_text;
|
||||
msg.metadata.edit_date = msg.metadata.date + 60;
|
||||
}
|
||||
@@ -169,7 +170,7 @@ impl FakeTdClient {
|
||||
|
||||
// Удаляем сообщение из списка
|
||||
if let Some(messages) = self.messages.get_mut(&chat_id) {
|
||||
messages.retain(|m| m.id != message_id);
|
||||
messages.retain(|m| m.id().as_i64() != message_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,7 +239,7 @@ mod tests {
|
||||
assert_eq!(client.sent_messages().len(), 1);
|
||||
assert_eq!(client.sent_messages()[0].text, "Hello");
|
||||
assert_eq!(client.get_messages(123).len(), 1);
|
||||
assert_eq!(client.get_messages(123)[0].id, msg_id);
|
||||
assert_eq!(client.get_messages(123)[0].id().as_i64(), msg_id);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -248,8 +249,8 @@ mod tests {
|
||||
client.edit_message(123, msg_id, "Hello World".to_string());
|
||||
|
||||
assert_eq!(client.edited_messages().len(), 1);
|
||||
assert_eq!(client.get_messages(123)[0].content, "Hello World");
|
||||
assert!(client.get_messages(123)[0].edit_date > 0);
|
||||
assert_eq!(client.get_messages(123)[0].content.text, "Hello World");
|
||||
assert!(client.get_messages(123)[0].edit_date() > 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -6,6 +6,7 @@ use helpers::app_builder::TestAppBuilder;
|
||||
use helpers::snapshot_utils::{buffer_to_string, render_to_buffer};
|
||||
use helpers::test_data::{create_test_chat, TestChatBuilder, TestMessageBuilder};
|
||||
use insta::assert_snapshot;
|
||||
use tele_tui::types::{ChatId, MessageId};
|
||||
|
||||
#[test]
|
||||
fn snapshot_empty_chat() {
|
||||
@@ -154,8 +155,8 @@ fn snapshot_outgoing_read() {
|
||||
.build();
|
||||
|
||||
// Set last_read_outbox to simulate message being read
|
||||
if let Some(chat) = app.chats.iter_mut().find(|c| c.id == 123) {
|
||||
chat.last_read_outbox_message_id = 2;
|
||||
if let Some(chat) = app.chats.iter_mut().find(|c| c.id == ChatId::new(123)) {
|
||||
chat.last_read_outbox_message_id = MessageId::new(2);
|
||||
}
|
||||
|
||||
let buffer = render_to_buffer(80, 24, |f| {
|
||||
|
||||
@@ -223,6 +223,6 @@ fn test_load_older_messages_on_scroll_up() {
|
||||
|
||||
// Теперь должно быть 15 сообщений
|
||||
assert_eq!(client.get_messages(123).len(), 15);
|
||||
assert_eq!(client.get_messages(123)[0].content.text(), "Msg 81");
|
||||
assert_eq!(client.get_messages(123)[14].content.text(), "Msg 100");
|
||||
assert_eq!(client.get_messages(123)[0].content.text, "Msg 81");
|
||||
assert_eq!(client.get_messages(123)[14].content.text, "Msg 100");
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ mod helpers;
|
||||
use helpers::fake_tdclient::FakeTdClient;
|
||||
use helpers::test_data::create_test_chat;
|
||||
use tele_tui::tdlib::ProfileInfo;
|
||||
use tele_tui::types::ChatId;
|
||||
|
||||
/// Test: Открытие профиля в личном чате (i)
|
||||
#[test]
|
||||
@@ -26,7 +27,7 @@ fn test_open_profile_in_private_chat() {
|
||||
#[test]
|
||||
fn test_profile_shows_user_info() {
|
||||
let profile = ProfileInfo {
|
||||
chat_id: 123,
|
||||
chat_id: ChatId::new(123),
|
||||
title: "Alice Johnson".to_string(),
|
||||
username: Some("alice".to_string()),
|
||||
phone_number: Some("+1234567890".to_string()),
|
||||
@@ -49,7 +50,7 @@ fn test_profile_shows_user_info() {
|
||||
#[test]
|
||||
fn test_profile_shows_group_member_count() {
|
||||
let profile = ProfileInfo {
|
||||
chat_id: 456,
|
||||
chat_id: ChatId::new(456),
|
||||
title: "Work Team".to_string(),
|
||||
username: None,
|
||||
phone_number: None,
|
||||
@@ -72,7 +73,7 @@ fn test_profile_shows_group_member_count() {
|
||||
#[test]
|
||||
fn test_profile_shows_channel_info() {
|
||||
let profile = ProfileInfo {
|
||||
chat_id: 789,
|
||||
chat_id: ChatId::new(789),
|
||||
title: "News Channel".to_string(),
|
||||
username: Some("news_channel".to_string()),
|
||||
phone_number: None,
|
||||
@@ -107,7 +108,7 @@ fn test_close_profile_with_esc() {
|
||||
#[test]
|
||||
fn test_profile_without_optional_fields() {
|
||||
let profile = ProfileInfo {
|
||||
chat_id: 999,
|
||||
chat_id: ChatId::new(999),
|
||||
title: "Anonymous User".to_string(),
|
||||
username: None,
|
||||
phone_number: None,
|
||||
|
||||
@@ -37,8 +37,8 @@ fn test_toggle_reaction_removes_it() {
|
||||
|
||||
// Проверяем что реакция есть
|
||||
let messages_before = client.get_messages(123);
|
||||
assert_eq!(messages_before[0].reactions.len(), 1);
|
||||
assert_eq!(messages_before[0].reactions[0].is_chosen, true);
|
||||
assert_eq!(messages_before[0].reactions().len(), 1);
|
||||
assert_eq!(messages_before[0].reactions()[0].is_chosen, true);
|
||||
|
||||
// Симулируем удаление реакции (в реальном App это toggle)
|
||||
// FakeTdClient просто записывает что реакция была "убрана"
|
||||
@@ -51,7 +51,7 @@ fn test_toggle_reaction_removes_it() {
|
||||
client.messages.insert(123, vec![msg_after]);
|
||||
|
||||
let messages_after = client.get_messages(123);
|
||||
assert_eq!(messages_after[0].reactions.len(), 0);
|
||||
assert_eq!(messages_after[0].reactions().len(), 0);
|
||||
}
|
||||
|
||||
/// Test: Множественные реакции на одно сообщение
|
||||
@@ -89,7 +89,7 @@ fn test_reactions_from_multiple_users() {
|
||||
client = client.with_message(123, msg);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
let reaction = &messages[0].reactions[0];
|
||||
let reaction = &messages[0].reactions()[0];
|
||||
|
||||
assert_eq!(reaction.emoji, "👍");
|
||||
assert_eq!(reaction.count, 3);
|
||||
@@ -109,7 +109,7 @@ fn test_own_reaction_is_chosen() {
|
||||
client = client.with_message(123, msg);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
let reaction = &messages[0].reactions[0];
|
||||
let reaction = &messages[0].reactions()[0];
|
||||
|
||||
assert_eq!(reaction.is_chosen, true);
|
||||
// В UI это будет отображаться в рамках: [❤️]
|
||||
@@ -128,7 +128,7 @@ fn test_other_reaction_not_chosen() {
|
||||
client = client.with_message(123, msg);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
let reaction = &messages[0].reactions[0];
|
||||
let reaction = &messages[0].reactions()[0];
|
||||
|
||||
assert_eq!(reaction.is_chosen, false);
|
||||
// В UI это будет отображаться без рамок: 😂 2
|
||||
@@ -154,7 +154,7 @@ fn test_reaction_counter_increases() {
|
||||
client.messages.insert(123, vec![msg_v2]);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages[0].reactions[0].count, 5);
|
||||
assert_eq!(messages[0].reactions()[0].count, 5);
|
||||
}
|
||||
|
||||
/// Test: Обновление реакции - мы добавили свою к существующим
|
||||
@@ -177,7 +177,7 @@ fn test_update_reaction_we_add_ours() {
|
||||
client.messages.insert(123, vec![msg_after]);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
let reaction = &messages[0].reactions[0];
|
||||
let reaction = &messages[0].reactions()[0];
|
||||
|
||||
assert_eq!(reaction.count, 3);
|
||||
assert_eq!(reaction.is_chosen, true);
|
||||
@@ -195,7 +195,7 @@ fn test_single_reaction_shows_only_emoji() {
|
||||
client = client.with_message(123, msg);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
let reaction = &messages[0].reactions[0];
|
||||
let reaction = &messages[0].reactions()[0];
|
||||
|
||||
assert_eq!(reaction.count, 1);
|
||||
// В UI: если count=1, показываем только emoji без цифры
|
||||
@@ -228,16 +228,16 @@ fn test_reactions_on_multiple_messages() {
|
||||
let messages = client.get_messages(123);
|
||||
|
||||
// Первое: 1 реакция
|
||||
assert_eq!(messages[0].reactions.len(), 1);
|
||||
assert_eq!(messages[0].reactions[0].emoji, "👍");
|
||||
assert_eq!(messages[0].reactions().len(), 1);
|
||||
assert_eq!(messages[0].reactions()[0].emoji, "👍");
|
||||
|
||||
// Второе: 1 реакция
|
||||
assert_eq!(messages[1].reactions.len(), 1);
|
||||
assert_eq!(messages[1].reactions[0].emoji, "❤️");
|
||||
assert_eq!(messages[1].reactions().len(), 1);
|
||||
assert_eq!(messages[1].reactions()[0].emoji, "❤️");
|
||||
|
||||
// Третье: 2 реакции
|
||||
assert_eq!(messages[2].reactions.len(), 2);
|
||||
assert_eq!(messages[2].reactions[0].emoji, "😂");
|
||||
assert_eq!(messages[2].reactions[1].emoji, "🔥");
|
||||
assert_eq!(messages[2].reactions[1].is_chosen, true);
|
||||
assert_eq!(messages[2].reactions().len(), 2);
|
||||
assert_eq!(messages[2].reactions()[0].emoji, "😂");
|
||||
assert_eq!(messages[2].reactions()[1].emoji, "🔥");
|
||||
assert_eq!(messages[2].reactions()[1].is_chosen, true);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ mod helpers;
|
||||
use helpers::fake_tdclient::FakeTdClient;
|
||||
use helpers::test_data::TestMessageBuilder;
|
||||
use tele_tui::tdlib::{ForwardInfo, ReplyInfo};
|
||||
use tele_tui::types::MessageId;
|
||||
|
||||
/// Test: Reply создаёт сообщение с reply_to
|
||||
#[test]
|
||||
@@ -28,8 +29,8 @@ fn test_reply_creates_message_with_reply_to() {
|
||||
// Проверяем что в списке 2 сообщения
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 2);
|
||||
assert_eq!(messages[1].id, reply_id);
|
||||
assert_eq!(messages[1].content.text(), "Answer!");
|
||||
assert_eq!(messages[1].id(), MessageId::new(reply_id));
|
||||
assert_eq!(messages[1].content.text, "Answer!");
|
||||
}
|
||||
|
||||
/// Test: Reply отображает превью оригинального сообщения
|
||||
@@ -48,10 +49,10 @@ fn test_reply_shows_original_preview() {
|
||||
// Проверяем что reply_to сохранено
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert!(messages[0].reply_to.is_some());
|
||||
assert!(messages[0].reply_to().is_some());
|
||||
|
||||
let reply = messages[0].reply_to.as_ref().unwrap();
|
||||
assert_eq!(reply.message_id, 100);
|
||||
let reply = messages[0].reply_to().unwrap();
|
||||
assert_eq!(reply.message_id, MessageId::new(100));
|
||||
assert_eq!(reply.sender_name, "Alice");
|
||||
assert_eq!(reply.text, "Original");
|
||||
}
|
||||
@@ -76,7 +77,7 @@ fn test_cancel_reply_sends_without_reply_to() {
|
||||
assert_eq!(client.sent_messages()[0].reply_to, None);
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages[1].content.text(), "Regular message");
|
||||
assert_eq!(messages[1].content.text, "Regular message");
|
||||
}
|
||||
|
||||
/// Test: Forward создаёт сообщение с forward_from
|
||||
@@ -94,9 +95,9 @@ fn test_forward_creates_message_with_forward_from() {
|
||||
// Проверяем что forward_from сохранено
|
||||
let messages = client.get_messages(456);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert!(messages[0].forward_from.is_some());
|
||||
assert!(messages[0].forward_from().is_some());
|
||||
|
||||
let forward = messages[0].forward_from.as_ref().unwrap();
|
||||
let forward = messages[0].forward_from().unwrap();
|
||||
assert_eq!(forward.sender_name, "Bob");
|
||||
assert!(forward.date > 0); // Дата установлена
|
||||
}
|
||||
@@ -114,7 +115,7 @@ fn test_forward_displays_sender_name() {
|
||||
client = client.with_message(789, msg);
|
||||
|
||||
let messages = client.get_messages(789);
|
||||
let forward = messages[0].forward_from.as_ref().unwrap();
|
||||
let forward = messages[0].forward_from().unwrap();
|
||||
|
||||
// В UI это будет отображаться как "↪ Переслано от Charlie"
|
||||
assert_eq!(forward.sender_name, "Charlie");
|
||||
@@ -144,7 +145,7 @@ fn test_forward_to_different_chat() {
|
||||
|
||||
// Проверяем что во втором чате тоже 1 сообщение (пересланное)
|
||||
assert_eq!(client.get_messages(456).len(), 1);
|
||||
assert!(client.get_messages(456)[0].forward_from.is_some());
|
||||
assert!(client.get_messages(456)[0].forward_from().is_some());
|
||||
}
|
||||
|
||||
/// Test: Reply + Forward комбинация (ответ на пересланное сообщение)
|
||||
@@ -167,7 +168,7 @@ fn test_reply_to_forwarded_message() {
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 2);
|
||||
assert_eq!(messages[1].id, reply_id);
|
||||
assert_eq!(messages[1].id(), MessageId::new(reply_id));
|
||||
}
|
||||
|
||||
/// Test: Forward множества сообщений (batch forward)
|
||||
@@ -196,7 +197,7 @@ fn test_forward_multiple_messages() {
|
||||
// Проверяем что все 3 сообщения пересланы
|
||||
let messages = client.get_messages(456);
|
||||
assert_eq!(messages.len(), 3);
|
||||
assert!(messages[0].forward_from.is_some());
|
||||
assert!(messages[1].forward_from.is_some());
|
||||
assert!(messages[2].forward_from.is_some());
|
||||
assert!(messages[0].forward_from().is_some());
|
||||
assert!(messages[1].forward_from().is_some());
|
||||
assert!(messages[2].forward_from().is_some());
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ fn test_send_text_message() {
|
||||
// Проверяем что сообщение добавилось в список
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].id, msg_id);
|
||||
assert_eq!(messages.text(), "Hello, Mom!");
|
||||
assert_eq!(messages[0].is_outgoing, true);
|
||||
assert_eq!(messages[0].id().as_i64(), msg_id);
|
||||
assert_eq!(messages[0].text(), "Hello, Mom!");
|
||||
assert_eq!(messages[0].is_outgoing(), true);
|
||||
}
|
||||
|
||||
/// Test: Отправка нескольких сообщений обновляет список
|
||||
@@ -49,12 +49,12 @@ fn test_send_multiple_messages_updates_list() {
|
||||
// Проверяем что все сообщения в списке
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 3);
|
||||
assert_eq!(messages[0].id, msg1_id);
|
||||
assert_eq!(messages[1].id, msg2_id);
|
||||
assert_eq!(messages[2].id, msg3_id);
|
||||
assert_eq!(messages.text(), "Message 1");
|
||||
assert_eq!(messages.text(), "Message 2");
|
||||
assert_eq!(messages.text(), "Message 3");
|
||||
assert_eq!(messages[0].id().as_i64(), msg1_id);
|
||||
assert_eq!(messages[1].id().as_i64(), msg2_id);
|
||||
assert_eq!(messages[2].id().as_i64(), msg3_id);
|
||||
assert_eq!(messages[0].text(), "Message 1");
|
||||
assert_eq!(messages[1].text(), "Message 2");
|
||||
assert_eq!(messages[2].text(), "Message 3");
|
||||
}
|
||||
|
||||
/// Test: Отправка пустого сообщения (должно быть игнорировано на уровне App)
|
||||
@@ -73,8 +73,8 @@ fn test_send_empty_message_technical() {
|
||||
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages[0].id, msg_id);
|
||||
assert_eq!(messages.text(), "");
|
||||
assert_eq!(messages[0].id().as_i64(), msg_id);
|
||||
assert_eq!(messages[0].text(), "");
|
||||
}
|
||||
|
||||
/// Test: Отправка сообщения с форматированием (markdown сущности)
|
||||
@@ -89,7 +89,7 @@ fn test_send_message_with_markdown() {
|
||||
// Проверяем что текст сохранился как есть (парсинг markdown - отдельная логика)
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 1);
|
||||
assert_eq!(messages.text(), text);
|
||||
assert_eq!(messages[0].text(), text);
|
||||
}
|
||||
|
||||
/// Test: Отправка сообщения в разные чаты
|
||||
@@ -112,12 +112,12 @@ fn test_send_messages_to_different_chats() {
|
||||
// Проверяем что сообщения распределены по чатам
|
||||
let chat123_messages = client.get_messages(123);
|
||||
assert_eq!(chat123_messages.len(), 2);
|
||||
assert_eq!(chat123_messages.text(), "Hello Mom");
|
||||
assert_eq!(chat123_messages.text(), "How are you?");
|
||||
assert_eq!(chat123_messages[0].text(), "Hello Mom");
|
||||
assert_eq!(chat123_messages[1].text(), "How are you?");
|
||||
|
||||
let chat456_messages = client.get_messages(456);
|
||||
assert_eq!(chat456_messages.len(), 1);
|
||||
assert_eq!(chat456_messages.text(), "Hello Boss");
|
||||
assert_eq!(chat456_messages[0].text(), "Hello Boss");
|
||||
}
|
||||
|
||||
/// Test: Новое сообщение появляется в реальном времени (симуляция)
|
||||
@@ -139,8 +139,8 @@ fn test_receive_incoming_message() {
|
||||
// Проверяем что в списке 2 сообщения
|
||||
let messages = client.get_messages(123);
|
||||
assert_eq!(messages.len(), 2);
|
||||
assert_eq!(messages[0].is_outgoing, true); // Наше сообщение
|
||||
assert_eq!(messages[1].is_outgoing, false); // Входящее
|
||||
assert_eq!(messages.text(), "Hey there!");
|
||||
assert_eq!(messages[1].sender_name, "Alice");
|
||||
assert_eq!(messages[0].is_outgoing(), true); // Наше сообщение
|
||||
assert_eq!(messages[1].is_outgoing(), false); // Входящее
|
||||
assert_eq!(messages[1].text(), "Hey there!");
|
||||
assert_eq!(messages[1].sender_name(), "Alice");
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ expression: output
|
||||
│ │
|
||||
│ ┌ Выбери реакцию ────────────────────────────────┐ │
|
||||
│ │ │ │
|
||||
│ │ 👍 👎 ❤️ 🔥 😊 😢 😮 🎉 │ │
|
||||
│ │ 👍 👎 ❤️ 🔥 😊 😢 😮 🎉 │ │
|
||||
│ │ │ │
|
||||
│ └────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
|
||||
@@ -13,7 +13,7 @@ expression: output
|
||||
│ │
|
||||
│ ┌ Выбери реакцию ────────────────────────────────┐ │
|
||||
│ │ │ │
|
||||
│ │ 👍 👎 ❤️ 🔥 😊 😢 😮 🎉 │ │
|
||||
│ │ 👍 👎 ❤️ 🔥 😊 😢 😮 🎉 │ │
|
||||
│ │ │ │
|
||||
│ └────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
|
||||
Reference in New Issue
Block a user