================================================
This app displays trending repositories from Github.
It has two branches one showing usage of RxJava and other Kotlin coroutines
The app consists of single fragment (TrendingFragment) that displays the trending repositories from Github
Provides Pull to Refresh action that force refreshes repositories from api in case of success and from DB in case of api failure
MVVM with LiveData
The projects uses Espresso for UI testing. TrendingFragmentTest mocks TrendingViewModel to run the tests.
The project creates an in memory database for each database test but still runs them on the device.
Each ViewModel is tested using local unit tests with mock Repository implementations.
Each Repository is tested using local unit tests with mock web service and mock database.
The project uses MockWebServer project to test REST api interactions.
TrendingDaoImpl is tested using local unit tests with mock dao implementations.
- Android Support Library
- Android Architecture Components
- Swipe Refresh Layout for pull to refresh action
- Facebook Shimmer Library for shimmer loading effect
- Koin for dependency injection
- Retrofit and OkHttp for REST api communication
- Kotline coroutines
- Glide for image loading
- Espresso for UI tests
- Mockwebserver for api test
- Mockk for mocking in tests
- Room for offline storage