/PicsAndLoginTestApp

Test app for pics and login

Primary LanguageKotlin

PicsAndLoginTestApp

Test app for pics and login

Простое тестовое задание. У нас ботомнав с 2 фрагментами. В первом фрагменте бесконечный список элементов с картинками и во втором фрагменте форма логин. Так как мы не хотим убивать фрагменты и создавать их заново при каждом тапе на ботомнав,было принято решение отказаться от гугл навигации в пользу простого кода на фрагментманагере. Создаем сразу 2 фрагемнта. Скрываем тот, который не нужно и при необходимости просто меняем видимость фрагментов. После поворота устройства находим иснтанс из манагера по тегу.

В проекте использованы: Clean Architecture, Google ViewModels, Kotlin-coroutines, Retrofit2, Glide, JUnit4. Все необходимые классы покрыты тестами.

Обратите внимание, в проекте свой кастомный service locator. В зависимости от buildConfigProperty вы будете использовать или основные реализации классов или тестовые. Вам нужно или запустить релизную сборку для отображения реальных данных с сервера или же поменять значение в файле build.gradle.

Фрагмент с изображениями. В нем ресайклвью с разными вьютайп:

  1. полноэкранный лоадер когда нет данных и мы их загружаем
  2. полноэкранная ошибка когда нет данных и кнопка для повторной загрузки
  3. лоадер на дне экрана когда есть данные
  4. ошибка с текстом причины и с кнопкой для повторного получения данных

Данные подгружаются автоматически при скроле, когда достигается последний элемент

Фрагмент с логином имеет 2 поля ввода. Для них написаны валидаторы

  1. Валидатор пустоты: проверяет что поле не пусто и выдает ошибку в обратном случае
  2. Валидатор минимальной длины: проверяет что текст больше чем переданный аргумент минимальной длины
  3. Валидатор для эл.почты: использован pattern из андроид android.util.Patterns.EMAIL_ADDRESS
  4. Валидатор для пароля. Он должен содержать минимум 1 букву заглавную, 1 букву строчную и 1 цифру

Вьюмодель получает список валидаторов и проверяет поочередно и выдает ошибку сразу при непрохождении.

В проекте по 2 мапера для каждой фичи. От данных с сервера к данным бизнес логики и от данных бизнес логики к данным юай. Это действительно оправдано и облегчает жизнь. Проверьте классы маперов и тесты к ним.

По всем вопросам и предложениям пишите мне в телеграм: @JohnnySC