Files
eatvio_app/test/features/create_plan/README.md
2025-10-21 21:02:17 +03:00

12 KiB
Raw Blame History

Widget Tests для создания плана питания

Этот каталог содержит widget тесты для функциональности создания плана питания в приложении Eatvio.

Файлы тестов

1. basic_widget_test.dart

Основные widget тесты, которые проверяют базовую функциональность создания плана питания:

  • Создание CreatePlanCubit - проверяет корректное создание cubit'а
  • Отображение полей формы - проверяет наличие всех необходимых полей
  • Обновление полей - проверяет корректное обновление полей при вводе данных
  • Выбор типа плана - проверяет функциональность выбора типа плана питания
  • Продолжительность плана - проверяет выбор продолжительности
  • Статус плана - проверяет выбор статуса (активный, черновик, личный)
  • Опции плана - проверяет настройку опций плана питания
  • Отображение лейблов - проверяет корректное отображение подписей полей
  • Placeholder текст - проверяет отображение подсказок в полях
  • Кнопка публикации - проверяет наличие и функциональность кнопки
  • Обработка нажатий - проверяет корректную обработку нажатий на кнопки
  • Состояния загрузки - проверяет отображение индикатора загрузки
  • Сообщения об ошибках - проверяет отображение ошибок
  • Сообщения об успехе - проверяет отображение сообщений об успешном выполнении
  • Валидация полей - проверяет отображение ошибок валидации
  • Полная форма - проверяет отображение всех полей формы
  • Опции типов планов - проверяет отображение доступных типов планов
  • Опции продолжительности - проверяет отображение доступных продолжительностей
  • Опции с ценами - проверяет отображение опций с ценообразованием

2. advanced_widget_test.dart

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

  • PlanTypeChoiceWidget - тестирует виджет выбора типа плана питания
  • PlanDurationDropDownWidget - тестирует виджет выбора продолжительности
  • OptionWidget - тестирует виджет настройки опций
  • Интерактивность - тестирует взаимодействие с виджетами
  • Макет экрана - тестирует общий макет экрана создания плана питания
  • Валидация - тестирует валидацию с реальными виджетами
  • Настройка опций - тестирует функциональность настройки опций
  • Выбор изображения - тестирует функциональность выбора изображения
  • Тарифные планы - тестирует отображение различных тарифных планов

3. integration_widget_test.dart

Интеграционные тесты для полного экрана создания плана питания:

  • CreatePlanScreen - тестирует весь экран создания плана питания
  • Workflow создания - тестирует полный процесс создания плана питания
  • Валидация формы - проверяет валидацию всей формы
  • Состояния успеха/ошибки - тестирует различные состояния
  • Редактирование плана - тестирует режим редактирования
  • Загрузка - тестирует состояние загрузки
  • Опции плана - тестирует настройку опций плана питания

Запуск тестов

Запуск всех тестов создания плана питания:

flutter test test/features/create_plan/

Запуск конкретного файла тестов:

# Базовые тесты (рекомендуется)
flutter test test/features/create_plan/basic_widget_test.dart

# Продвинутые тесты с реальными виджетами
flutter test test/features/create_plan/advanced_widget_test.dart

# Интеграционные тесты
flutter test test/features/create_plan/integration_widget_test.dart

Структура тестов

Все тесты используют:

  • Mockito для создания мок-объектов
  • Flutter Test для widget тестирования
  • BlocProvider для управления состоянием
  • Key для поиска элементов по ключам

Покрытие тестами

Тесты покрывают:

  • ✅ Создание и инициализация CreatePlanCubit
  • ✅ Отображение всех полей формы (название, описание, продолжительность, статус)
  • ✅ Выбор типа плана питания (похудение, фитнес, здоровье, поведение)
  • ✅ Выбор продолжительности плана (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 файлы.

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

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

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

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

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

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

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

Особенности планов питания

Планы питания отличаются от диет и рецептов:

Отличия от диет:

  • Коммерческая направленность - планы питания предназначены для продажи
  • Опции и тарифы - возможность настройки различных опций с разными ценами
  • Типы планов - более специфичные типы (похудение, фитнес, здоровье, поведение)
  • Продолжительность - гибкая настройка продолжительности

Отличия от рецептов:

  • Структурированность - планы питания имеют четкую структуру с опциями
  • Ценообразование - встроенная система ценообразования
  • Коммерческий характер - предназначены для монетизации
  • Комплексность - включают не только рецепты, но и консультации

Модели данных

Тесты работают с моделями:

  • CreatePlanModel - модель для создания плана питания
  • PlanModel - модель плана питания
  • PlanType - тип плана питания (slim, fit, wellness, behavior)
  • PacketOptions - опции пакета плана питания
  • PlanValidationState - состояние валидации плана питания
  • OptionValidationState - состояние валидации опций