# Widget Tests для создания рецепта Этот каталог содержит widget тесты для функциональности создания рецепта в приложении Eatvio. ## Файлы тестов ### 1. `basic_widget_test.dart` Основные widget тесты, которые проверяют базовую функциональность создания рецепта: - **Создание CreateRecipeCubit** - проверяет корректное создание cubit'а - **Отображение полей формы** - проверяет наличие всех необходимых полей - **Обновление полей** - проверяет корректное обновление полей при вводе данных - **Отображение лейблов** - проверяет корректное отображение подписей полей - **Placeholder текст** - проверяет отображение подсказок в полях - **Кнопка публикации** - проверяет наличие и функциональность кнопки - **Обработка нажатий** - проверяет корректную обработку нажатий на кнопки - **Состояния загрузки** - проверяет отображение индикатора загрузки - **Сообщения об ошибках** - проверяет отображение ошибок - **Сообщения об успехе** - проверяет отображение сообщений об успешном выполнении - **Валидация полей** - проверяет отображение ошибок валидации - **Полная форма** - проверяет отображение всех полей формы ### 2. `simple_widget_test.dart` Более сложные тесты, которые работают с реальными виджетами приложения: - **InfoAboutRecipeWidget** - тестирует виджет основной информации о рецепте - **IngredientsWidget** - тестирует виджет ингредиентов - **StepsWidget** - тестирует виджет шагов приготовления - **Интерактивность** - тестирует взаимодействие с полями формы - **Добавление элементов** - тестирует добавление ингредиентов, шагов и тегов ### 3. `widget_test.dart` Полные интеграционные тесты (требуют настройки GetIt): - **Полный экран создания рецепта** - тестирует весь экран целиком - **Валидация** - проверяет валидацию всех полей - **Навигация** - тестирует навигацию между экранами - **Редактирование рецепта** - тестирует режим редактирования ## Запуск тестов ### Запуск всех тестов создания рецепта: ```bash flutter test test/features/create_recipe/ ``` ### Запуск конкретного файла тестов: ```bash # Базовые тесты (рекомендуется) flutter test test/features/create_recipe/basic_widget_test.dart # Простые тесты с реальными виджетами flutter test test/features/create_recipe/simple_widget_test.dart # Полные интеграционные тесты (требуют настройки) flutter test test/features/create_recipe/widget_test.dart ``` ## Структура тестов Все тесты используют: - **Mockito** для создания мок-объектов - **Flutter Test** для widget тестирования - **BlocProvider** для управления состоянием - **AppKeys** для поиска элементов по ключам ## Рекомендации 1. **Начните с `basic_widget_test.dart`** - эти тесты наиболее стабильны и покрывают основную функциональность 2. **Используйте `simple_widget_test.dart`** для тестирования реальных виджетов приложения 3. **`widget_test.dart`** требует дополнительной настройки GetIt и может быть нестабильным ## Покрытие тестами Тесты покрывают: - ✅ Создание и инициализация cubit'а - ✅ Отображение всех полей формы - ✅ Ввод данных в поля - ✅ Валидация полей - ✅ Обработка состояний (загрузка, ошибка, успех) - ✅ Интерактивность (нажатия, ввод текста) - ✅ Отображение лейблов и подсказок - ✅ Добавление ингредиентов, шагов и тегов ## Зависимости Тесты используют следующие пакеты: - `flutter_test` - основной пакет для тестирования - `mockito` - для создания мок-объектов - `flutter_bloc` - для тестирования BLoC/Cubit - `build_runner` - для генерации мок-файлов ## Генерация мок-файлов После изменения тестов запустите: ```bash dart run build_runner build --delete-conflicting-outputs ``` Это сгенерирует необходимые `.mocks.dart` файлы.