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

15 KiB
Raw Blame History

Widget Tests для регистрации

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

Файлы тестов

1. basic_widget_test.dart

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

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

2. advanced_widget_test.dart

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

  • NameScreen - тестирует экран ввода имени и фамилии
  • CredentialsScreen - тестирует экран ввода email и пароля
  • GenderScreen - тестирует экран выбора пола
  • DateOfBirthScreen - тестирует экран выбора даты рождения
  • Интерактивность - тестирует взаимодействие с виджетами
  • Макет экрана - тестирует общий макет экрана регистрации
  • Валидация - тестирует валидацию с реальными виджетами
  • Прогресс регистрации - тестирует отображение прогресса
  • Согласие с условиями - тестирует функциональность согласия

3. integration_widget_test.dart

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

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

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

Запуск всех тестов регистрации:

flutter test test/features/registration/

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

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

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

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

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

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

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

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

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

  • ✅ Создание и инициализация RegistrationCubit
  • ✅ Отображение всех полей формы (имя, фамилия, email, пароль, телефон)
  • ✅ Выбор пола (мужской, женский)
  • ✅ Выбор даты рождения
  • ✅ Ввод номера телефона
  • ✅ Ввод физических параметров (рост, вес)
  • ✅ Ввод дополнительной информации (аллергии, лекарства, спорт)
  • ✅ Ввод данных в поля
  • ✅ Валидация полей
  • ✅ Обработка состояний (загрузка, ошибка, успех)
  • ✅ Интерактивность (нажатия, ввод текста, выбор опций)
  • ✅ Отображение лейблов и подсказок
  • ✅ Функциональность кнопки регистрации
  • ✅ Прогресс регистрации (15 шагов)
  • ✅ Согласие с условиями использования
  • ✅ Согласие с политикой конфиденциальности
  • ✅ Физические измерения (обхваты)
  • ✅ Медицинская информация (давление, гипотония, гипертония)
  • ✅ Предпочтения в еде (любимые и нелюбимые продукты)

Типы полей регистрации

Тесты покрывают следующие типы полей:

Основная информация:

  • Имя - обязательное поле
  • Фамилия - обязательное поле
  • Email - обязательное поле с валидацией
  • Пароль - обязательное поле с маскировкой
  • Подтверждение пароля - обязательное поле с проверкой совпадения

Личные данные:

  • Пол - выбор из двух вариантов (мужской, женский)
  • Дата рождения - выбор даты
  • Номер телефона - ввод с маской
  • Рост - числовое поле в сантиметрах
  • Вес - числовое поле в килограммах

Физические параметры:

  • Обхват груди - числовое поле в сантиметрах
  • Обхват талии - числовое поле в сантиметрах
  • Обхват бедер - числовое поле в сантиметрах

Медицинская информация:

  • Верхнее давление - числовое поле
  • Нижнее давление - числовое поле
  • Гипотония - чекбокс
  • Гипертония - чекбокс

Дополнительная информация:

  • Аллергии - многострочное текстовое поле
  • Принимаемые лекарства - многострочное текстовое поле
  • Любимые виды спорта - многострочное текстовое поле
  • Любимые продукты - многострочное текстовое поле
  • Нелюбимые продукты - многострочное текстовое поле
  • Дополнительная информация - многострочное текстовое поле

Согласия:

  • Условия использования - чекбокс
  • Политика конфиденциальности - чекбокс

Шаги регистрации

Регистрация состоит из 15 шагов:

  1. Основная информация - имя, фамилия
  2. Учетные данные - email, пароль
  3. Пол - выбор пола
  4. Дата рождения - выбор даты
  5. Номер телефона - ввод телефона
  6. Рост - ввод роста
  7. Вес - ввод веса
  8. Обхват груди - ввод обхвата груди
  9. Обхват талии - ввод обхвата талии
  10. Обхват бедер - ввод обхвата бедер
  11. Давление - ввод показателей давления
  12. Медицинские условия - гипотония, гипертония
  13. Аллергии - информация об аллергиях
  14. Лекарства - принимаемые лекарства
  15. Дополнительная информация - спорт, еда, прочее

Зависимости

Тесты используют следующие пакеты:

  • flutter_test - основной пакет для тестирования
  • mockito - для создания мок-объектов
  • flutter_bloc - для тестирования BLoC/Cubit
  • build_runner - для генерации мок-файлов

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

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

dart run build_runner build --delete-conflicting-outputs

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

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

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

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

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

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

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

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

Особенности регистрации

Регистрация в Eatvio имеет следующие особенности:

Многоэтапность:

  • 15 шагов - регистрация разбита на логические этапы
  • Прогресс-бар - отображение текущего прогресса
  • Навигация - возможность перехода между шагами

Комплексность данных:

  • Личная информация - имя, фамилия, пол, дата рождения
  • Контактные данные - email, телефон
  • Физические параметры - рост, вес, обхваты
  • Медицинская информация - давление, заболевания
  • Предпочтения - спорт, еда, аллергии

Валидация:

  • Обязательные поля - проверка заполнения
  • Формат данных - валидация email, телефона
  • Совпадение паролей - проверка подтверждения
  • Согласия - обязательное согласие с условиями

Безопасность:

  • Маскировка паролей - скрытие ввода паролей
  • Валидация email - проверка корректности email
  • Согласие с условиями - юридическая защита

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

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

  • UserRegistrationSheet - основная модель регистрации
  • RegistrationState - состояние процесса регистрации
  • RegistrationCubit - управление состоянием регистрации

Интеграция с аналитикой

Регистрация интегрирована с аналитикой:

  • Отслеживание шагов - аналитика прогресса регистрации
  • Метрики конверсии - отслеживание завершения регистрации
  • A/B тестирование - тестирование различных вариантов форм

Локализация

Тесты поддерживают локализацию:

  • Русский язык - основной язык интерфейса
  • Многоязычность - поддержка других языков
  • Локализованные сообщения - ошибки и подсказки

Производительность

Тесты оптимизированы для производительности:

  • Быстрое выполнение - минимальное время выполнения
  • Эффективное использование ресурсов - оптимизация памяти
  • Параллельное выполнение - возможность параллельного запуска