tests
This commit is contained in:
@@ -4,22 +4,23 @@ mod helpers;
|
||||
|
||||
use helpers::fake_tdclient::FakeTdClient;
|
||||
use helpers::test_data::{create_test_chat, TestChatBuilder, TestMessageBuilder};
|
||||
use tele_tui::types::{ChatId, MessageId};
|
||||
|
||||
/// Test: Поиск по чатам фильтрует по названию
|
||||
#[test]
|
||||
fn test_search_chats_by_title() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_chats_by_title() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let chat1 = create_test_chat("Mom", 123);
|
||||
let chat2 = create_test_chat("Boss", 456);
|
||||
let chat3 = create_test_chat("Mom's Work", 789);
|
||||
|
||||
client = client.with_chats(vec![chat1, chat2, chat3]);
|
||||
let client = client.with_chats(vec![chat1, chat2, chat3]);
|
||||
|
||||
// Ищем "mom" - должно найти "Mom" и "Mom's Work"
|
||||
let query = "mom".to_lowercase();
|
||||
let filtered: Vec<_> = client
|
||||
.get_chats()
|
||||
let chats = client.get_chats();
|
||||
let filtered: Vec<_> = chats
|
||||
.iter()
|
||||
.filter(|c| c.title.to_lowercase().contains(&query))
|
||||
.collect();
|
||||
@@ -30,9 +31,9 @@ fn test_search_chats_by_title() {
|
||||
}
|
||||
|
||||
/// Test: Поиск по чатам фильтрует по @username
|
||||
#[test]
|
||||
fn test_search_chats_by_username() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_chats_by_username() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let chat1 = TestChatBuilder::new("Alice", 123).username("alice").build();
|
||||
|
||||
@@ -40,12 +41,12 @@ fn test_search_chats_by_username() {
|
||||
|
||||
let chat3 = TestChatBuilder::new("Charlie", 789).build(); // Без username
|
||||
|
||||
client = client.with_chats(vec![chat1, chat2, chat3]);
|
||||
let client = client.with_chats(vec![chat1, chat2, chat3]);
|
||||
|
||||
// Ищем "bob" - должно найти "Bob" (@bobby)
|
||||
let query = "bob".to_lowercase();
|
||||
let filtered: Vec<_> = client
|
||||
.get_chats()
|
||||
let chats = client.get_chats();
|
||||
let filtered: Vec<_> = chats
|
||||
.iter()
|
||||
.filter(|c| {
|
||||
c.title.to_lowercase().contains(&query)
|
||||
@@ -61,20 +62,20 @@ fn test_search_chats_by_username() {
|
||||
}
|
||||
|
||||
/// Test: Пустой поисковый запрос возвращает все чаты
|
||||
#[test]
|
||||
fn test_search_empty_query_returns_all() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_empty_query_returns_all() {
|
||||
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 query = "";
|
||||
let filtered: Vec<_> = client
|
||||
.get_chats()
|
||||
let chats = client.get_chats();
|
||||
let filtered: Vec<_> = chats
|
||||
.iter()
|
||||
.filter(|c| c.title.to_lowercase().contains(query))
|
||||
.collect();
|
||||
@@ -84,15 +85,15 @@ fn test_search_empty_query_returns_all() {
|
||||
}
|
||||
|
||||
/// Test: Поиск внутри чата по тексту сообщений
|
||||
#[test]
|
||||
fn test_search_messages_in_chat() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_messages_in_chat() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let msg1 = TestMessageBuilder::new("Hello world", 100).build();
|
||||
let msg2 = TestMessageBuilder::new("How are you?", 101).build();
|
||||
let msg3 = TestMessageBuilder::new("Hello again", 102).build();
|
||||
|
||||
client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
let client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
|
||||
// Ищем "hello"
|
||||
let query = "hello".to_lowercase();
|
||||
@@ -108,15 +109,15 @@ fn test_search_messages_in_chat() {
|
||||
}
|
||||
|
||||
/// Test: Навигация по результатам поиска (n/N)
|
||||
#[test]
|
||||
fn test_navigate_search_results() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_navigate_search_results() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let msg1 = TestMessageBuilder::new("First match", 100).build();
|
||||
let msg2 = TestMessageBuilder::new("Second match", 101).build();
|
||||
let msg3 = TestMessageBuilder::new("Third match", 102).build();
|
||||
|
||||
client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
let client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
|
||||
// Ищем "match"
|
||||
let query = "match".to_lowercase();
|
||||
@@ -158,15 +159,15 @@ fn test_navigate_search_results() {
|
||||
}
|
||||
|
||||
/// Test: Поиск с учётом регистра (case-insensitive)
|
||||
#[test]
|
||||
fn test_search_case_insensitive() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_case_insensitive() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let msg1 = TestMessageBuilder::new("HELLO", 100).build();
|
||||
let msg2 = TestMessageBuilder::new("hello", 101).build();
|
||||
let msg3 = TestMessageBuilder::new("HeLLo", 102).build();
|
||||
|
||||
client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
let client = client.with_messages(123, vec![msg1, msg2, msg3]);
|
||||
|
||||
// Ищем "hello" (lowercase)
|
||||
let query = "hello".to_lowercase();
|
||||
@@ -181,14 +182,14 @@ fn test_search_case_insensitive() {
|
||||
}
|
||||
|
||||
/// Test: Поиск не находит ничего
|
||||
#[test]
|
||||
fn test_search_no_results() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_search_no_results() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let msg1 = TestMessageBuilder::new("Hello", 100).build();
|
||||
let msg2 = TestMessageBuilder::new("World", 101).build();
|
||||
|
||||
client = client.with_messages(123, vec![msg1, msg2]);
|
||||
let client = client.with_messages(123, vec![msg1, msg2]);
|
||||
|
||||
// Ищем "xyz" - не должно найтись
|
||||
let query = "xyz".to_lowercase();
|
||||
@@ -202,14 +203,14 @@ fn test_search_no_results() {
|
||||
}
|
||||
|
||||
/// Test: Отмена поиска (Esc) восстанавливает обычный режим
|
||||
#[test]
|
||||
fn test_cancel_search_restores_normal_mode() {
|
||||
let mut client = FakeTdClient::new();
|
||||
#[tokio::test]
|
||||
async fn test_cancel_search_restores_normal_mode() {
|
||||
let client = FakeTdClient::new();
|
||||
|
||||
let chat1 = create_test_chat("Mom", 123);
|
||||
let chat2 = create_test_chat("Boss", 456);
|
||||
|
||||
client = client.with_chats(vec![chat1, chat2]);
|
||||
let client = client.with_chats(vec![chat1, chat2]);
|
||||
|
||||
// Симулируем: пользователь начал поиск
|
||||
let mut is_searching = true;
|
||||
@@ -217,8 +218,8 @@ fn test_cancel_search_restores_normal_mode() {
|
||||
|
||||
// Фильтруем
|
||||
let query = search_query.to_lowercase();
|
||||
let filtered: Vec<_> = client
|
||||
.get_chats()
|
||||
let chats = client.get_chats();
|
||||
let filtered: Vec<_> = chats
|
||||
.iter()
|
||||
.filter(|c| c.title.to_lowercase().contains(&query))
|
||||
.collect();
|
||||
|
||||
Reference in New Issue
Block a user