forked from eatvio/eatvio_app
Widget Tests для создания диеты
Этот каталог содержит widget тесты для функциональности создания диеты в приложении Eatvio.
Файлы тестов
1. basic_widget_test.dart
Основные widget тесты, которые проверяют базовую функциональность создания диеты:
- Создание CreateDietCubit - проверяет корректное создание cubit'а
- Отображение полей формы - проверяет наличие всех необходимых полей
- Обновление полей - проверяет корректное обновление полей при вводе данных
- Выбор типа диеты - проверяет функциональность выбора типа диеты
- Продолжительность диеты - проверяет выбор продолжительности
- Статус диеты - проверяет выбор статуса (активная, черновик, личная)
- Отображение лейблов - проверяет корректное отображение подписей полей
- Placeholder текст - проверяет отображение подсказок в полях
- Кнопка публикации - проверяет наличие и функциональность кнопки
- Обработка нажатий - проверяет корректную обработку нажатий на кнопки
- Состояния загрузки - проверяет отображение индикатора загрузки
- Сообщения об ошибках - проверяет отображение ошибок
- Сообщения об успехе - проверяет отображение сообщений об успешном выполнении
- Валидация полей - проверяет отображение ошибок валидации
- Полная форма - проверяет отображение всех полей формы
- Опции типов диет - проверяет отображение доступных типов диет
- Опции продолжительности - проверяет отображение доступных продолжительностей
2. advanced_widget_test.dart
Продвинутые тесты, которые работают с реальными виджетами приложения:
- DietTypeChoiceWidget - тестирует виджет выбора типа диеты
- DietDurationDropDownWidget - тестирует виджет выбора продолжительности
- StatusDropDownWidget - тестирует виджет выбора статуса
- Интерактивность - тестирует взаимодействие с виджетами
- Макет экрана - тестирует общий макет экрана создания диеты
- Валидация - тестирует валидацию с реальными виджетами
- Планирование приемов пищи - тестирует функциональность планирования
- Выбор изображения - тестирует функциональность выбора изображения
3. integration_widget_test.dart
Интеграционные тесты для полного экрана создания диеты:
- CreateDietScreen - тестирует весь экран создания диеты
- Workflow создания - тестирует полный процесс создания диеты
- Валидация формы - проверяет валидацию всей формы
- Состояния успеха/ошибки - тестирует различные состояния
- Редактирование диеты - тестирует режим редактирования
- Загрузка - тестирует состояние загрузки
Запуск тестов
Запуск всех тестов создания диеты:
flutter test test/features/create_diet/
Запуск конкретного файла тестов:
# Базовые тесты (рекомендуется)
flutter test test/features/create_diet/basic_widget_test.dart
# Продвинутые тесты с реальными виджетами
flutter test test/features/create_diet/advanced_widget_test.dart
# Интеграционные тесты
flutter test test/features/create_diet/integration_widget_test.dart
Структура тестов
Все тесты используют:
- Mockito для создания мок-объектов
- Flutter Test для widget тестирования
- BlocProvider для управления состоянием
- Key для поиска элементов по ключам
Покрытие тестами
Тесты покрывают:
- ✅ Создание и инициализация CreateDietCubit
- ✅ Отображение всех полей формы (название, описание, продолжительность, статус)
- ✅ Выбор типа диеты (веганская, мясная, углеводная, легкая)
- ✅ Выбор продолжительности диеты (7, 14, 21, 30 дней)
- ✅ Выбор статуса диеты (активная, черновик, личная)
- ✅ Ввод данных в поля
- ✅ Валидация полей
- ✅ Обработка состояний (загрузка, ошибка, успех)
- ✅ Интерактивность (нажатия, ввод текста, выбор опций)
- ✅ Отображение лейблов и подсказок
- ✅ Планирование приемов пищи
- ✅ Выбор изображения диеты
- ✅ Редактирование существующих диет
Типы диет
Тесты покрывают следующие типы диет:
- Веганская - без продуктов животного происхождения
- Мясная - с мясными продуктами
- Углеводная - с высоким содержанием углеводов
- Легкая - низкокалорийная диета
Продолжительности диет
Тесты покрывают следующие продолжительности:
- 7 дней - недельная диета
- 14 дней - двухнедельная диета
- 21 день - трехнедельная диета
- 30 дней - месячная диета
Статусы диет
Тесты покрывают следующие статусы:
- Активная - публичная диета
- Черновик - неопубликованная диета
- Личная - приватная диета
Зависимости
Тесты используют следующие пакеты:
flutter_test- основной пакет для тестированияmockito- для создания мок-объектовflutter_bloc- для тестирования BLoC/Cubitbuild_runner- для генерации мок-файлов
Генерация мок-файлов
После изменения тестов запустите:
dart run build_runner build --delete-conflicting-outputs
Это сгенерирует необходимые .mocks.dart файлы.
Результаты тестирования
Базовые тесты: ✅ 19 тестов прошли успешно
- Покрывают основную функциональность создания диеты
- Стабильны и быстры в выполнении
- Рекомендуются для регулярного запуска
Продвинутые тесты: Требуют реальных виджетов приложения
- Тестируют интеграцию с реальными компонентами
- Могут быть нестабильными при изменениях в UI
Интеграционные тесты: Полное тестирование экрана
- Тестируют весь workflow создания диеты
- Требуют настройки зависимостей