Test app for pics and login
Простое тестовое задание. У нас ботомнав с 2 фрагментами. В первом фрагменте бесконечный список элементов с картинками и во втором фрагменте форма логин. Так как мы не хотим убивать фрагменты и создавать их заново при каждом тапе на ботомнав,было принято решение отказаться от гугл навигации в пользу простого кода на фрагментманагере. Создаем сразу 2 фрагемнта. Скрываем тот, который не нужно и при необходимости просто меняем видимость фрагментов. После поворота устройства находим иснтанс из манагера по тегу.
В проекте использованы: Clean Architecture, Google ViewModels, Kotlin-coroutines, Retrofit2, Glide, JUnit4. Все необходимые классы покрыты тестами.
Обратите внимание, в проекте свой кастомный service locator. В зависимости от buildConfigProperty вы будете использовать или основные реализации классов или тестовые. Вам нужно или запустить релизную сборку для отображения реальных данных с сервера или же поменять значение в файле build.gradle.
Фрагмент с изображениями. В нем ресайклвью с разными вьютайп:
- полноэкранный лоадер когда нет данных и мы их загружаем
- полноэкранная ошибка когда нет данных и кнопка для повторной загрузки
- лоадер на дне экрана когда есть данные
- ошибка с текстом причины и с кнопкой для повторного получения данных
Данные подгружаются автоматически при скроле, когда достигается последний элемент
Фрагмент с логином имеет 2 поля ввода. Для них написаны валидаторы
- Валидатор пустоты: проверяет что поле не пусто и выдает ошибку в обратном случае
- Валидатор минимальной длины: проверяет что текст больше чем переданный аргумент минимальной длины
- Валидатор для эл.почты: использован pattern из андроид android.util.Patterns.EMAIL_ADDRESS
- Валидатор для пароля. Он должен содержать минимум 1 букву заглавную, 1 букву строчную и 1 цифру
Вьюмодель получает список валидаторов и проверяет поочередно и выдает ошибку сразу при непрохождении.
В проекте по 2 мапера для каждой фичи. От данных с сервера к данным бизнес логики и от данных бизнес логики к данным юай. Это действительно оправдано и облегчает жизнь. Проверьте классы маперов и тесты к ним.
По всем вопросам и предложениям пишите мне в телеграм: @JohnnySC