docs: update roadmap - P4.11 and P4.13 complete (88% total)
Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled

Updated REFACTORING_ROADMAP.md to reflect completion of P4.11 and P4.13:

**P4.11 - Unit tests**: ЗАВЕРШЕНО 100%
- Added 9 unit tests in src/utils.rs
- Coverage for time/date formatting functions
- All edge cases tested (timezones, midnight wrap, fallback)
- Total: 54 unit tests pass (was 45, +9)

**P4.13 - Config validation**: ЗАВЕРШЕНО 100%
- Validation was already implemented (config.rs:344-389)
- Added 15 comprehensive tests for full coverage
- Total: 23 config tests pass (8 existing + 15 new)

**Progress**:
- Priority 4: 3/4 tasks complete (75%)
- Total: 15/17 tasks complete (88%)

**Remaining**:
- P4.14 — Async/await consistency (last Priority 4 task)
- Priority 5: 0/3 tasks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-01 02:02:09 +03:00
parent 5897f6deaa
commit a177ab66c6

View File

@@ -506,51 +506,44 @@ if config.hotkeys.matches(KeyCode::Up, "up") {
## Приоритет 4: Качество кода
### 11. Добавить юнит-тесты
### 11. Добавить юнит-тесты ✅ ЗАВЕРШЕНО!
**Проблема**: Нет тестов, сложно убедиться в корректности.
**Статус**: ЗАВЕРШЕНО 100% (+106 строк тестов, 2026-02-01)
**Решение**: Добавить тесты для:
**Что сделано**:
- ✅ Добавлены 9 unit тестов в `src/utils.rs` (в секции `#[cfg(test)]`)
- ✅ Покрыты все edge cases для форматирования времени
- ✅ Тестирование приватных функций через публичный API
-Все 54 unit теста проходят (было 45, +9 новых)
**Добавленные тесты**:
- `format_timestamp_with_tz` - положительный offset (+03:00)
- `format_timestamp_with_tz` - отрицательный offset (-05:00)
- `format_timestamp_with_tz` - нулевой offset (UTC)
- `format_timestamp_with_tz` - переход через полночь
- `format_timestamp_with_tz` - невалидный timezone (fallback)
- `get_day` - расчет дня из timestamp
- `get_day_grouping` - группировка сообщений по дням
- `format_datetime` - полная дата и время с MSK
- `parse_timezone_offset` - через публичный API (приватная функция)
**Примеры**:
```rust
// tests/utils_test.rs
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_format_timestamp_with_tz() {
let timestamp = 1640000000; // 2021-12-20 09:33:20 UTC
assert_eq!(
format_timestamp_with_tz(timestamp, "+03:00"),
"12:33"
);
fn test_format_timestamp_with_tz_positive_offset() {
let timestamp = 1640000000; // 2021-12-20 11:33:20 UTC
assert_eq!(format_timestamp_with_tz(timestamp, "+03:00"), "14:33");
}
#[test]
fn test_parse_timezone_offset() {
assert_eq!(parse_timezone_offset("+03:00"), 3);
assert_eq!(parse_timezone_offset("-05:00"), -5);
assert_eq!(parse_timezone_offset("invalid"), 3); // fallback
}
}
// tests/config_test.rs
#[test]
fn test_parse_color() {
let config = Config::default();
assert_eq!(config.parse_color("red"), Color::Red);
assert_eq!(config.parse_color("invalid"), Color::White); // fallback
}
// tests/grouping_test.rs
#[test]
fn test_message_grouping_by_date() {
// ...
fn test_get_day_grouping() {
let msg1 = 1640000000; // 2021-12-20 09:33:20
let msg2 = 1640040000; // 2021-12-20 20:40:00
assert_eq!(get_day(msg1), get_day(msg2)); // Один день
}
```
**Запуск**: `cargo test`
**Запуск**: `cargo test --lib utils::tests`
---
@@ -596,11 +589,26 @@ pub struct AuthManager { ... }
---
### 13. Config валидация
### 13. Config валидация ✅ ЗАВЕРШЕНО!
**Проблема**: Невалидные значения в конфиге молча игнорируются.
**Статус**: ЗАВЕРШЕНО 100% (+149 строк тестов, 2026-02-01)
**Решение**: Добавить валидацию:
**Что сделано**:
- ✅ Валидация уже была реализована в `config.rs:344-389`
- ✅ Вызов валидации в `Config::load():450-456`
- ✅ Добавлено 15 comprehensive тестов для полного покрытия
-Все 23 config теста проходят (8 существующих + 15 новых)
**Добавленные тесты**:
- Валидация дефолтного конфига
- Timezone: валидный (+03:00, -05:00), невалидный (без знака)
- Цвета: все 18 стандартных ratatui цветов
- Невалидные цвета (rainbow, purple, pink)
- Case-insensitive парсинг (RED, Green, YELLOW)
- parse_color() для всех вариантов (standard, light, gray/grey)
- Fallback к White для невалидных цветов
**Реализация**: Уже была добавлена ранее:
```rust
impl Config {
pub fn validate(&self) -> Result<(), TeletuiError> {
@@ -732,11 +740,13 @@ tracing-subscriber = "0.3"
- [x] P3.8 — Formatting модуль ✅
- [x] P3.9 — Message Grouping ✅
- [x] P3.10 — Hotkey Mapping ✅
- [ ] Priority 4: 1/4 задач ✅
- [ ] Priority 4: 3/4 задач ✅
- [x] P4.11 — Unit tests ✅
- [x] P4.12 — Rustdoc ✅
- [x] P4.13 — Config validation ✅
- [ ] Priority 5: 0/3 задач
**Всего**: 13/17 задач (76%)
**Всего**: 15/17 задач (88%)
---