Thanks for the opportunity to work on this assignment~
Function checklist:
- Reusable CurrencyListFragment
- Different UI for Crypto and Fiat currencies, normal and search states
- Empty state for CurrencyListFragment search page
- CurrencyListFragment search functionality: filter by name, code, and symbol
- Cancelable search function
- Buttons on MainActivity: Insert, Delete, Crypto source, Fiat source, All
- Fetching Fiat and Crypto data from the network
- Unit Test + Instrumented Test(for DAO) with good coverage(viewmodel, repositories, usecases 100% class coverage)
Clean Architecture + MVVM
Data Layer:
- Repository implementations
- Network request
- Database operations
Domain Layer:
- UseCases: Business logic
- Repository interfaces
- Models
Presentation Layer:
- ViewModels: UI<->data linking logic
- View: Fragment, Activity, Adapters...
- Dependency Injection: Koin
- Database: Room
- Asynchronous Tasks: Coroutines
- Network: Retrofit, OkHttp
- UI: ViewBinding, View based UI,
- Testing: JUnit, Mockk, Truth, Turbine
Test Coverage: Highlights:
- ViewModels 100% classes coverage
- Repositories 100% classes coverage
- UseCases: 100% classes coverage