# План тестирования gigachat-api-client

## Обзор проекта
Пакет предоставляет два основных класса:
- **AuthClient** - для аутентификации и получения JWT токенов
- **ApiClient** - для работы с GigaChat API (файлы, модели, запросы)

## Области тестирования

### 1. AuthClient
- ✅ Конструктор с различными опциями
- ✅ getToken() - успешное получение токена
- ✅ getToken() - обработка ошибок
- ✅ Debug режим (логирование)
- ✅ Кастомный URL
- ✅ Правильное формирование заголовков (authorization, rquid)

### 2. ApiClient
#### Конструктор и инициализация
- ✅ Конструктор с JWT и опциями
- ✅ Установка базового URL (по умолчанию и кастомный)
- ✅ Установка заголовков (Authorization, Content-Type)
- ✅ Debug режим (логирование)
- ✅ Timeout настройка

#### Файлы (Files API)
- ✅ getFileList() - получение списка файлов
- ✅ getFileInfo(fileId) - получение информации о файле
- ✅ uploadFile() - загрузка файла (Buffer)
- ✅ uploadFile() - загрузка файла (File объект)
- ✅ uploadFile() - загрузка файла с кастомным именем
- ✅ downloadFile() - скачивание файла
- ✅ deleteFile() - удаление файла
- ✅ Обработка ошибок для всех методов файлов

#### Токены (Tokens API)
- ✅ getAvailableTokens() - получение доступных токенов
- ✅ Обработка ошибок

#### Модели (Models API)
- ✅ getModels() - получение списка моделей
- ✅ Обработка ошибок

#### Запросы (Requests API)
- ✅ sendRequest() - отправка запроса с моделью и сообщениями
- ✅ sendRequest() - правильное форматирование JSON
- ✅ Обработка ошибок

### 3. Edge Cases и обработка ошибок
- ✅ Обработка сетевых ошибок
- ✅ Обработка ошибок 4xx, 5xx
- ✅ Валидация параметров
- ✅ Timeout обработка

### 4. Интеграционные тесты
- ✅ Проверка правильности формирования запросов
- ✅ Проверка правильности парсинга ответов

## Стратегия тестирования

### Unit тесты
- Моки для axios
- Проверка правильности вызовов API
- Проверка формирования заголовков и данных

### Моки
- axios.create и axios методы (get, post)
- axios-logger (requestLogger, responseLogger)
- form-data для uploadFile

## Покрытие кода
Цель: >80% покрытия кода
