Files
eatvio_app/test/features/blog_post_create/README.md
2025-10-22 16:48:08 +03:00

134 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Blog Post Creation Tests
Этот набор тестов покрывает функциональность создания, обновления и удаления блог постов в приложении EatVio.
## Структура тестов
### 1. Basic Widget Tests (`basic_widget_test.dart`)
Базовые виджет тесты для проверки основных компонентов создания блог постов:
- **Создание BlogPostCreateCubit** - проверка инициализации cubit
- **Отображение полей формы** - проверка наличия всех необходимых полей
- **Обновление полей** - проверка ввода текста в поля заголовка, описания и видео
- **Отображение лейблов** - проверка корректности отображения подписей полей
- **Placeholder текст** - проверка подсказок в полях ввода
- **Кнопка создания** - проверка отображения и функциональности кнопки
- **Обработка нажатий** - проверка реакции на нажатия кнопок
- **Состояния загрузки** - проверка отображения индикатора загрузки
- **Сообщения об ошибках** - проверка отображения ошибок
- **Сообщения об успехе** - проверка отображения успешных операций
- **Валидация полей** - проверка валидации обязательных полей
- **Полная форма** - проверка отображения всех полей формы
- **Загрузка изображений** - проверка функциональности загрузки изображений
### 2. Advanced Widget Tests (`advanced_widget_test.dart`)
Продвинутые тесты для проверки сложных сценариев:
- **Создание с всеми полями** - тест создания блог поста со всеми заполненными полями
- **Создание с изображением** - тест создания блог поста с загруженным изображением
- **Обновление блог поста** - тест обновления существующего блог поста
- **Удаление блог поста** - тест удаления блог поста
- **Состояния загрузки** - проверка состояний загрузки во время операций
- **Обработка ошибок** - проверка обработки ошибок при создании
- **Успешное создание** - проверка успешного завершения операций
- **Валидация формы** - проверка валидации полей перед отправкой
- **Взаимодействие с загрузкой изображений** - проверка функциональности выбора изображений
- **Валидация URL видео** - проверка валидации ссылок на видео
- **Отправка с пустыми полями** - проверка обработки пустых полей
- **Длинный контент** - проверка обработки длинного текста
### 3. Integration Widget Tests (`integration_widget_test.dart`)
Интеграционные тесты для проверки полного потока работы:
- **Полный поток создания** - тест полного процесса создания блог поста
- **Поток обновления** - тест полного процесса обновления блог поста
- **Поток удаления** - тест полного процесса удаления блог поста
- **Обработка ошибок** - тест обработки ошибок в полном потоке
- **Состояния загрузки** - тест состояний загрузки в полном потоке
- **Успешное завершение** - тест успешного завершения операций
- **Валидация формы** - тест валидации в полном потоке
- **Загрузка изображений** - тест загрузки изображений в полном потоке
- **Полный функционал** - тест всех функций создания блог постов
## Ключи приложения (AppKeys)
Тесты используют следующие ключи из `app_keys.dart`:
- `blogPostCreateScreenTitleTextField` - поле заголовка
- `blogPostCreateScreenContentTextField` - поле описания
- `blogPostCreateScreenVideoLinkTextField` - поле ссылки на видео
- `blogPostCreateScreenCreateButton` - кнопка создания/обновления
- `imageWidget` - виджет загрузки изображения
## Моки (Mocks)
Тесты используют моки для следующих компонентов:
- `MockBlogPostRepository` - репозиторий для работы с блог постами
- `MockFeedCubit` - cubit для управления лентой постов
## Состояния BlogPostCreateState
Тесты проверяют следующие состояния:
- `BlogPostCreateState` - начальное состояние
- `BlogPostCreateStateLoading` - состояние загрузки
- `BlogPostCreateStateLoaded` - состояние успешного завершения
- `BlogPostCreateStateError` - состояние ошибки
## Запуск тестов
Для запуска всех тестов блог постов:
```bash
flutter test test/features/blog_post_create/
```
Для запуска конкретного теста:
```bash
flutter test test/features/blog_post_create/basic_widget_test.dart
flutter test test/features/blog_post_create/advanced_widget_test.dart
flutter test test/features/blog_post_create/integration_widget_test.dart
```
## Покрытие функциональности
Тесты покрывают:
- ✅ Создание блог постов
- ✅ Обновление блог постов
- ✅ Удаление блог постов
- ✅ Загрузка изображений
- ✅ Валидация полей
- ✅ Обработка ошибок
- ✅ Состояния загрузки
- ✅ Интеграция с лентой постов
- ✅ Пользовательский интерфейс
- ✅ Взаимодействие с формами
## Зависимости
Тесты используют следующие пакеты:
- `flutter_test` - базовые тесты Flutter
- `mockito` - создание моков
- `flutter_bloc` - тестирование BLoC
- `image_picker` - работа с изображениями
## Структура файлов
```
test/features/blog_post_create/
├── basic_widget_test.dart
├── basic_widget_test.mocks.dart
├── advanced_widget_test.dart
├── advanced_widget_test.mocks.dart
├── integration_widget_test.dart
├── integration_widget_test.mocks.dart
└── README.md
```