fixes
This commit is contained in:
94
README.md
94
README.md
@@ -144,6 +144,97 @@ src/
|
||||
- `clipboard` 0.5 — clipboard access
|
||||
- `chrono` 0.4 — date/time formatting
|
||||
|
||||
## Тестирование
|
||||
|
||||
tele-tui использует **snapshot тестирование** для UI и интеграционные тесты для логики.
|
||||
|
||||
### Запуск всех тестов
|
||||
|
||||
```bash
|
||||
cargo test
|
||||
```
|
||||
|
||||
### Snapshot тесты
|
||||
|
||||
Snapshot тесты проверяют отображение UI компонентов через виртуальный терминал:
|
||||
|
||||
```bash
|
||||
# Прогнать snapshot тесты
|
||||
cargo test --test chat_list
|
||||
cargo test --test messages
|
||||
|
||||
# Посмотреть изменения в snapshots
|
||||
cargo insta review
|
||||
|
||||
# Принять все новые snapshots
|
||||
cargo insta accept
|
||||
|
||||
# Отклонить все изменения
|
||||
cargo insta reject
|
||||
```
|
||||
|
||||
### Установка cargo-insta
|
||||
|
||||
Для работы со snapshot тестами нужен `cargo-insta`:
|
||||
|
||||
```bash
|
||||
cargo install cargo-insta
|
||||
```
|
||||
|
||||
### Структура тестов
|
||||
|
||||
```
|
||||
tests/
|
||||
├── helpers/ # Тестовые утилиты
|
||||
│ ├── app_builder.rs # TestAppBuilder для создания тестовых App
|
||||
│ ├── test_data.rs # Builders для чатов и сообщений
|
||||
│ ├── snapshot_utils.rs # Утилиты для snapshot тестов
|
||||
│ └── fake_tdclient.rs # Mock TDLib клиент (для будущих integration тестов)
|
||||
├── chat_list.rs # Snapshot тесты для списка чатов (9 тестов)
|
||||
└── messages.rs # Snapshot тесты для сообщений (19 тестов)
|
||||
```
|
||||
|
||||
### Создание snapshot теста
|
||||
|
||||
```rust
|
||||
use helpers::test_data::TestChatBuilder;
|
||||
use helpers::app_builder::TestAppBuilder;
|
||||
use helpers::snapshot_utils::{render_to_buffer, buffer_to_string};
|
||||
use insta::assert_snapshot;
|
||||
|
||||
#[test]
|
||||
fn snapshot_my_feature() {
|
||||
let chat = TestChatBuilder::new("Test Chat", 123)
|
||||
.unread_count(5)
|
||||
.build();
|
||||
|
||||
let mut app = TestAppBuilder::new()
|
||||
.with_chat(chat)
|
||||
.selected_chat(123)
|
||||
.build();
|
||||
|
||||
let buffer = render_to_buffer(80, 24, |f| {
|
||||
tele_tui::ui::chat_list::render(f, f.area(), &mut app);
|
||||
});
|
||||
|
||||
let output = buffer_to_string(&buffer);
|
||||
assert_snapshot!("my_feature", output);
|
||||
}
|
||||
```
|
||||
|
||||
### Покрытие тестами
|
||||
|
||||
**Текущий прогресс**: 35/151 тестов (23%)
|
||||
|
||||
- ✅ Фаза 0: Инфраструктура (100%)
|
||||
- ✅ Фаза 1.1: Chat List snapshots (90%)
|
||||
- ✅ Фаза 1.2: Messages snapshots (95%)
|
||||
- ✅ Фаза 1.3: Modals snapshots (100%)
|
||||
- 🔄 Фаза 1.4-1.6: Input, Footer, Screens (0%)
|
||||
- 📋 Фаза 2: Integration тесты для логики (0%)
|
||||
|
||||
Подробный план: [TESTING_ROADMAP.md](TESTING_ROADMAP.md)
|
||||
|
||||
## Документация
|
||||
|
||||
- [INSTALL.md](INSTALL.md) — подробная инструкция по установке
|
||||
@@ -156,6 +247,9 @@ src/
|
||||
- [REQUIREMENTS.md](REQUIREMENTS.md) — функциональные требования
|
||||
- [DEVELOPMENT.md](DEVELOPMENT.md) — правила разработки
|
||||
- [ROADMAP.md](ROADMAP.md) — план развития проекта
|
||||
- [REFACTORING_ROADMAP.md](REFACTORING_ROADMAP.md) — план рефакторинга кода
|
||||
- [TESTING_ROADMAP.md](TESTING_ROADMAP.md) — план покрытия тестами
|
||||
- [TESTING_PROGRESS.md](TESTING_PROGRESS.md) — прогресс тестирования
|
||||
- [CONTEXT.md](CONTEXT.md) — текущий статус разработки
|
||||
|
||||
## Лицензия
|
||||
|
||||
Reference in New Issue
Block a user