forked from eatvio/eatvio_app
134 lines
7.5 KiB
Markdown
134 lines
7.5 KiB
Markdown
# 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
|
||
```
|