WIP: feat(tests): blog post create

This commit is contained in:
mso7nueh
2025-10-22 16:48:08 +03:00
parent ed612aa019
commit c2eda628dd
4 changed files with 1632 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
# 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
```