tests
This commit is contained in:
81
tests/e2e_smoke.rs
Normal file
81
tests/e2e_smoke.rs
Normal file
@@ -0,0 +1,81 @@
|
||||
// E2E Smoke tests для базовых сценариев запуска приложения
|
||||
|
||||
use tele_tui::tdlib::NetworkState;
|
||||
|
||||
/// Тест: Приложение запускается без краша
|
||||
/// Проверяем что базовые структуры создаются корректно
|
||||
#[tokio::test]
|
||||
async fn test_app_starts_without_crash() {
|
||||
// Проверяем что NetworkState enum работает корректно
|
||||
let states = vec![
|
||||
NetworkState::Ready,
|
||||
NetworkState::WaitingForNetwork,
|
||||
NetworkState::Connecting,
|
||||
NetworkState::ConnectingToProxy,
|
||||
NetworkState::Updating,
|
||||
];
|
||||
|
||||
for state in states {
|
||||
// Просто проверяем что состояния создаются без паники
|
||||
let _text = match state {
|
||||
NetworkState::Ready => "Ready",
|
||||
NetworkState::WaitingForNetwork => "Waiting for network",
|
||||
NetworkState::Connecting => "Connecting",
|
||||
NetworkState::ConnectingToProxy => "Connecting to proxy",
|
||||
NetworkState::Updating => "Updating",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// Тест: Проверка минимального размера терминала
|
||||
#[test]
|
||||
fn test_minimum_terminal_size() {
|
||||
const MIN_WIDTH: u16 = 80;
|
||||
const MIN_HEIGHT: u16 = 20;
|
||||
|
||||
// Проверяем что константы установлены разумно
|
||||
assert!(MIN_WIDTH >= 80, "Минимальная ширина должна быть >= 80");
|
||||
assert!(MIN_HEIGHT >= 20, "Минимальная высота должна быть >= 20");
|
||||
|
||||
// Проверяем граничные случаи
|
||||
let too_small_width = MIN_WIDTH - 1;
|
||||
let too_small_height = MIN_HEIGHT - 1;
|
||||
|
||||
assert!(too_small_width < MIN_WIDTH);
|
||||
assert!(too_small_height < MIN_HEIGHT);
|
||||
}
|
||||
|
||||
/// Тест: Базовые константы приложения
|
||||
#[test]
|
||||
fn test_app_constants() {
|
||||
use tele_tui::constants::*;
|
||||
|
||||
// Проверяем что лимиты установлены
|
||||
assert!(MAX_MESSAGES_IN_CHAT > 0, "Лимит сообщений должен быть > 0");
|
||||
assert!(MAX_CHATS > 0, "Лимит чатов должен быть > 0");
|
||||
assert!(MAX_USER_CACHE_SIZE > 0, "Размер кэша пользователей должен быть > 0");
|
||||
|
||||
// Проверяем что лимиты разумные
|
||||
assert!(MAX_MESSAGES_IN_CHAT <= 1000, "Слишком большой лимит сообщений");
|
||||
assert!(MAX_CHATS <= 500, "Слишком большой лимит чатов");
|
||||
}
|
||||
|
||||
/// Тест: Graceful shutdown флаг
|
||||
#[test]
|
||||
fn test_shutdown_flag() {
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::Arc;
|
||||
|
||||
let shutdown = Arc::new(AtomicBool::new(false));
|
||||
|
||||
// Проверяем начальное состояние
|
||||
assert!(!shutdown.load(Ordering::Relaxed), "Флаг должен быть false при создании");
|
||||
|
||||
// Проверяем установку флага
|
||||
shutdown.store(true, Ordering::Relaxed);
|
||||
assert!(shutdown.load(Ordering::Relaxed), "Флаг должен быть true после установки");
|
||||
|
||||
// Проверяем клонирование Arc
|
||||
let shutdown_clone = Arc::clone(&shutdown);
|
||||
assert!(shutdown_clone.load(Ordering::Relaxed), "Клон должен видеть то же значение");
|
||||
}
|
||||
Reference in New Issue
Block a user