forked from eatvio/eatvio_app
WIP: feat(tests): blog post create
This commit is contained in:
133
test/features/blog_post_create/README.md
Normal file
133
test/features/blog_post_create/README.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user