This commit is contained in:
Mikhail Kilin
2026-01-31 23:02:53 +03:00
parent af3c36b9a1
commit c5896b7f14
17 changed files with 1899 additions and 567 deletions

View File

@@ -4,17 +4,18 @@ mod helpers;
use helpers::fake_tdclient::FakeTdClient;
use helpers::test_data::{create_test_chat, TestMessageBuilder};
use tele_tui::types::{ChatId, MessageId};
/// Test: Навигация вверх/вниз по списку чатов
#[test]
fn test_navigate_chat_list_up_down() {
let mut client = FakeTdClient::new();
#[tokio::test]
async fn test_navigate_chat_list_up_down() {
let client = FakeTdClient::new();
let chat1 = create_test_chat("Mom", 123);
let chat2 = create_test_chat("Boss", 456);
let chat3 = create_test_chat("Friend", 789);
client = client.with_chats(vec![chat1, chat2, chat3]);
let client = client.with_chats(vec![chat1, chat2, chat3]);
let chats = client.get_chats();
@@ -52,9 +53,9 @@ fn test_navigate_chat_list_up_down() {
}
/// Test: Enter открывает чат
#[test]
fn test_enter_opens_chat() {
let mut client = FakeTdClient::new();
#[tokio::test]
async fn test_enter_opens_chat() {
let client = FakeTdClient::new();
let chat = create_test_chat("Mom", 123);
let _client = client.with_chat(chat);
@@ -70,8 +71,8 @@ fn test_enter_opens_chat() {
}
/// Test: Esc закрывает чат
#[test]
fn test_esc_closes_chat() {
#[tokio::test]
async fn test_esc_closes_chat() {
// Состояние: открыт чат 123
let selected_chat_id = Some(123);
@@ -82,9 +83,9 @@ fn test_esc_closes_chat() {
}
/// Test: Скролл сообщений в чате
#[test]
fn test_scroll_messages_in_chat() {
let mut client = FakeTdClient::new();
#[tokio::test]
async fn test_scroll_messages_in_chat() {
let client = FakeTdClient::new();
let messages = vec![
TestMessageBuilder::new("Msg 1", 1).build(),
@@ -94,7 +95,7 @@ fn test_scroll_messages_in_chat() {
TestMessageBuilder::new("Msg 5", 5).build(),
];
client = client.with_messages(123, messages);
let client = client.with_messages(123, messages);
let msgs = client.get_messages(123);
@@ -123,12 +124,12 @@ fn test_scroll_messages_in_chat() {
}
/// Test: Переключение между папками (1-9)
#[test]
fn test_switch_folders() {
let mut client = FakeTdClient::new();
#[tokio::test]
async fn test_switch_folders() {
let client = FakeTdClient::new();
// Добавляем папки (FakeTdClient уже создаёт "All" с id=0)
client = client.with_folder(1, "Personal").with_folder(2, "Work");
let client = client.with_folder(1, "Personal").with_folder(2, "Work");
let folders = client.get_folders();
@@ -156,8 +157,8 @@ fn test_switch_folders() {
}
/// Test: Русская раскладка для навигации (р/о/л/д)
#[test]
fn test_russian_layout_navigation() {
#[tokio::test]
async fn test_russian_layout_navigation() {
// В реальном App: к/j/h/l маппятся на р/о/л/д для русской раскладки
// Mapping:
@@ -181,9 +182,9 @@ fn test_russian_layout_navigation() {
}
/// Test: Подгрузка старых сообщений при скролле вверх
#[test]
fn test_load_older_messages_on_scroll_up() {
let mut client = FakeTdClient::new();
#[tokio::test]
async fn test_load_older_messages_on_scroll_up() {
let client = FakeTdClient::new();
// Начальные сообщения (последние 10)
let initial_messages = vec![
@@ -199,7 +200,7 @@ fn test_load_older_messages_on_scroll_up() {
TestMessageBuilder::new("Msg 100", 100).build(),
];
client = client.with_messages(123, initial_messages);
let client = client.with_messages(123, initial_messages);
assert_eq!(client.get_messages(123).len(), 10);
@@ -219,10 +220,11 @@ fn test_load_older_messages_on_scroll_up() {
let mut all_messages = older_messages;
all_messages.extend(client.get_messages(123));
client.messages.insert(123, all_messages);
let client = client.with_messages(123, all_messages);
// Теперь должно быть 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");
let messages = client.get_messages(123);
assert_eq!(messages.len(), 15);
assert_eq!(messages[0].content.text, "Msg 81");
assert_eq!(messages[14].content.text, "Msg 100");
}