forked from eatvio/eatvio_app
feat(test): diet, plan, registration
This commit is contained in:
187
test/features/create_plan/README.md
Normal file
187
test/features/create_plan/README.md
Normal file
@@ -0,0 +1,187 @@
|
||||
# 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 создания** - тестирует полный процесс создания плана питания
|
||||
- **Валидация формы** - проверяет валидацию всей формы
|
||||
- **Состояния успеха/ошибки** - тестирует различные состояния
|
||||
- **Редактирование плана** - тестирует режим редактирования
|
||||
- **Загрузка** - тестирует состояние загрузки
|
||||
- **Опции плана** - тестирует настройку опций плана питания
|
||||
|
||||
## Запуск тестов
|
||||
|
||||
### Запуск всех тестов создания плана питания:
|
||||
```bash
|
||||
flutter test test/features/create_plan/
|
||||
```
|
||||
|
||||
### Запуск конкретного файла тестов:
|
||||
```bash
|
||||
# Базовые тесты (рекомендуется)
|
||||
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` - для генерации мок-файлов
|
||||
|
||||
## Генерация мок-файлов
|
||||
|
||||
После изменения тестов запустите:
|
||||
```bash
|
||||
dart run build_runner build --delete-conflicting-outputs
|
||||
```
|
||||
|
||||
Это сгенерирует необходимые `.mocks.dart` файлы.
|
||||
|
||||
## Результаты тестирования
|
||||
|
||||
**Базовые тесты**: ✅ 21 тест прошел успешно
|
||||
- Покрывают основную функциональность создания плана питания
|
||||
- Стабильны и быстры в выполнении
|
||||
- Рекомендуются для регулярного запуска
|
||||
|
||||
**Продвинутые тесты**: Требуют реальных виджетов приложения
|
||||
- Тестируют интеграцию с реальными компонентами
|
||||
- Могут быть нестабильными при изменениях в UI
|
||||
|
||||
**Интеграционные тесты**: Полное тестирование экрана
|
||||
- Тестируют весь workflow создания плана питания
|
||||
- Требуют настройки зависимостей
|
||||
|
||||
## Особенности планов питания
|
||||
|
||||
Планы питания отличаются от диет и рецептов:
|
||||
|
||||
### Отличия от диет:
|
||||
- **Коммерческая направленность** - планы питания предназначены для продажи
|
||||
- **Опции и тарифы** - возможность настройки различных опций с разными ценами
|
||||
- **Типы планов** - более специфичные типы (похудение, фитнес, здоровье, поведение)
|
||||
- **Продолжительность** - гибкая настройка продолжительности
|
||||
|
||||
### Отличия от рецептов:
|
||||
- **Структурированность** - планы питания имеют четкую структуру с опциями
|
||||
- **Ценообразование** - встроенная система ценообразования
|
||||
- **Коммерческий характер** - предназначены для монетизации
|
||||
- **Комплексность** - включают не только рецепты, но и консультации
|
||||
|
||||
## Модели данных
|
||||
|
||||
Тесты работают с моделями:
|
||||
- **CreatePlanModel** - модель для создания плана питания
|
||||
- **PlanModel** - модель плана питания
|
||||
- **PlanType** - тип плана питания (slim, fit, wellness, behavior)
|
||||
- **PacketOptions** - опции пакета плана питания
|
||||
- **PlanValidationState** - состояние валидации плана питания
|
||||
- **OptionValidationState** - состояние валидации опций
|
||||
Reference in New Issue
Block a user