fixes
This commit is contained in:
69
CONTEXT.md
69
CONTEXT.md
@@ -1,6 +1,6 @@
|
||||
# Текущий контекст проекта
|
||||
|
||||
## Статус: Фаза 9 — ЗАВЕРШЕНО
|
||||
## Статус: Фаза 9 — ЗАВЕРШЕНО + Тестирование (19%)
|
||||
|
||||
### Что сделано
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
```
|
||||
src/
|
||||
├── main.rs # Точка входа, event loop, TDLib инициализация, graceful shutdown
|
||||
├── lib.rs # Библиотечный интерфейс (для тестов)
|
||||
├── config.rs # Конфигурация (TOML), загрузка credentials
|
||||
├── app/
|
||||
│ ├── mod.rs # App структура и состояние (needs_redraw флаг)
|
||||
@@ -147,8 +148,42 @@ src/
|
||||
└── tdlib/
|
||||
├── mod.rs # Модуль экспорта (TdClient, UserOnlineStatus, NetworkState)
|
||||
└── client.rs # TdClient: авторизация, чаты, сообщения, кеш, NetworkState, ReactionInfo
|
||||
|
||||
tests/
|
||||
├── helpers/
|
||||
│ ├── mod.rs # Экспорт тестовых утилит
|
||||
│ ├── app_builder.rs # TestAppBuilder для создания тестовых App
|
||||
│ ├── fake_tdclient.rs # FakeTdClient (mock TDLib клиент, для будущих интеграционных тестов)
|
||||
│ ├── snapshot_utils.rs # Утилиты для snapshot тестов (render_to_buffer, buffer_to_string)
|
||||
│ └── test_data.rs # Builders для тестовых данных (TestChatBuilder, TestMessageBuilder)
|
||||
├── chat_list.rs # Snapshot тесты для списка чатов (9 тестов)
|
||||
└── messages.rs # Snapshot тесты для сообщений (19 тестов)
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
|
||||
**Статус**: В процессе (19% завершено)
|
||||
|
||||
**Стратегия**: Комбо подход — 70% snapshot tests, 25% integration tests, 5% e2e smoke tests
|
||||
|
||||
**Инфраструктура (Фаза 0)**: ✅ Завершена
|
||||
- Добавлены зависимости: `insta = "1.34"`, `tokio-test = "0.4"`
|
||||
- Создан `src/lib.rs` для экспорта модулей в тесты
|
||||
- Созданы test helpers:
|
||||
- `TestAppBuilder` — fluent builder для создания тестовых App
|
||||
- `TestChatBuilder` / `TestMessageBuilder` — builders для тестовых данных
|
||||
- `FakeTdClient` — in-memory mock TDLib клиента
|
||||
- `render_to_buffer` / `buffer_to_string` — утилиты для snapshot тестов
|
||||
|
||||
**Snapshot Tests (Фаза 1)**: 28/57 (49%)
|
||||
- ✅ **1.1 Chat List** (9/10): пустой список, множественные чаты, unread, pinned, muted, mentions, selected, long title, search mode
|
||||
- ✅ **1.2 Messages** (19/19): empty chat, incoming/outgoing, date separators, sender grouping, read receipts, edited, long message wrap, markdown (bold/italic/code/links/mentions/spoiler), media placeholder, reply, forwarded, reactions (single/multiple), selected message
|
||||
- [ ] **1.3-1.6**: Modals, Input Field, Footer, Screens (0/29)
|
||||
|
||||
**Прогресс**: 28/151 тестов (19%)
|
||||
|
||||
Подробный план и roadmap: см. [TESTING_ROADMAP.md](TESTING_ROADMAP.md)
|
||||
|
||||
### Ключевые решения
|
||||
|
||||
1. **Неблокирующий receive**: TDLib updates приходят в отдельном потоке и передаются в main loop через `mpsc::channel`. Это позволяет UI оставаться отзывчивым.
|
||||
@@ -236,9 +271,39 @@ reaction_chosen = "yellow"
|
||||
reaction_other = "gray"
|
||||
```
|
||||
|
||||
## Последние обновления (2026-01-28)
|
||||
|
||||
### Тестирование — Фаза 1.3 завершена
|
||||
|
||||
**Добавлено**:
|
||||
- 📝 8 snapshot тестов для модальных окон (`tests/modals.rs`)
|
||||
- 🔧 Обновлён `TestAppBuilder` с методами: `with_chats()`, `message_search()`, `forward_mode()`
|
||||
- 🐛 Исправлены нестабильные date separator тесты (заменены на фиксированную дату)
|
||||
- 📚 Обновлена документация тестирования
|
||||
|
||||
**Покрытие**: 35/151 тестов (23%)
|
||||
- ✅ Chat List: 9 тестов
|
||||
- ✅ Messages: 18 тестов (empty chat, incoming/outgoing, date separators, grouping, read receipts, editing, wrap, markdown, media, reply, forward, reactions, selection)
|
||||
- ✅ Modals: 8 тестов (delete confirmation, emoji picker x2, profile x2, pinned message, search, forward mode)
|
||||
|
||||
**Все тесты проходят**: `cargo test` → 71 passed ✅
|
||||
|
||||
Подробности: [TESTING_PROGRESS.md](TESTING_PROGRESS.md)
|
||||
|
||||
## Что НЕ сделано / TODO
|
||||
|
||||
Все пункты Фазы 9 завершены! Можно переходить к следующей фазе разработки.
|
||||
Все пункты Фазы 9 завершены! Можно переходить к следующей фазе разработки или продолжить написание тестов.
|
||||
|
||||
## Технический долг
|
||||
|
||||
См. [REFACTORING_ROADMAP.md](REFACTORING_ROADMAP.md) для детального плана рефакторинга.
|
||||
|
||||
Основные области для улучшения:
|
||||
1. **ChatState enum** — схлопнуть boolean состояния в type-safe enum
|
||||
2. **Разделение TdClient** — слишком много ответственности в одном модуле
|
||||
3. **Типобезопасность** — newtype pattern для ID, error enum
|
||||
4. **UI компоненты** — выделить переиспользуемые компоненты
|
||||
5. **Тестирование** — добавить юнит-тесты для критичных функций
|
||||
|
||||
## Известные проблемы
|
||||
|
||||
|
||||
Reference in New Issue
Block a user