# 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 ```