Files
eatvio_app/test/features/create_diet

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/Cubit
  • build_runner - для генерации мок-файлов

Генерация мок-файлов

После изменения тестов запустите:

dart run build_runner build --delete-conflicting-outputs

Это сгенерирует необходимые .mocks.dart файлы.

Результаты тестирования

Базовые тесты: ✅ 19 тестов прошли успешно

  • Покрывают основную функциональность создания диеты
  • Стабильны и быстры в выполнении
  • Рекомендуются для регулярного запуска

Продвинутые тесты: Требуют реальных виджетов приложения

  • Тестируют интеграцию с реальными компонентами
  • Могут быть нестабильными при изменениях в UI

Интеграционные тесты: Полное тестирование экрана

  • Тестируют весь workflow создания диеты
  • Требуют настройки зависимостей