mirror of
https://github.com/hmalik144/android-technical-task-moneybox.git
synced 2025-12-10 03:05:21 +00:00
2.3 KiB
2.3 KiB
MoneyBox Android Technical Task
A small application for viewing investment products.
Part A
Bug 1 - Layout does not look as expected
- Constraints added to all TextInputLayouts
- Edit text views within TextInputLayouts and TextInputLayouts within match parent and the TextInputLayouts match parents
- correct spacing between edges margin of 12dp left and right
- email TextInputLayout with a 48dp margin at the top
Bug 2 - Validation is incorrect
- Email matching android email matcher
- allValid within allFieldsValid() is true by default
- once allValid changes to false it remains false and no login called
- Changes to false every failed validation
Bug 3 - Animation is looping incorrectly
- set minimum and maximum frames based the firstAnim Pair<Int, Int> range respectively
- set an animation completion listener and wait for first animation play to finish
- on completion of first animation change the min and max frames based on secondAnim Pair<Int, Int> range
- play animation with new min and max frames
Part B
Requirements
Minimum android SDK version 21, Android 5.0.0 (Lollipop) Permissions : Internet, Network State
Features
- Login (Name optional)
- View investment products
- Add one off payment of £20 to an investment
Architectural Pattern
MVVM - Model View Viewmodel SOLID coding
Jetpack
Unit tests
Test case one
- Respository Unit test (Networkings)
Test case two
- Repository Unit test (Storage)
Test case one
- Login viewmodel test
Test case two
- UserAccount viewmodel test
Integration tests
Test case one
- LoginActivity UI test
Built With
- Kodein - Painless Kotlin Dependency Injection
- Retrofit - Type-safe HTTP client for Android and Java by Square, Inc
- Secured Preference Store - A SharedPreferences wrapper for Android that encrypts the content with 256 bit AES encryption
- Lottie - Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!
Submitted by
- Haider Malik - Android Developer