forked from eatvio/eatvio_app
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- состояние ошибки
Запуск тестов
Для запуска всех тестов блог постов:
flutter test test/features/blog_post_create/
Для запуска конкретного теста:
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- базовые тесты Fluttermockito- создание моковflutter_bloc- тестирование BLoCimage_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