Android Application consisting of only 1 Activity and 2 fragments when the user opens the app should check the network connectivity and if the device is connected to the internet then get the most popular and top-rated movies. when the user taps on any movie we will transition to the movie details screen.
- Clean Architecture with MVVM
- Modularity
- Coroutines
- Unit test
- UI and automation testing
- Handle Configuration Changes
- Jetpack Navigation component
- MenuHost
- Dependency injection design pattern
- Repository design pattern
- LiveData, ViewModel
- Retrofit
- DataBinding
- Recycler view
- Picasso for Image Loading
- ConstraintLayout
WhatsApp.Video.2022-10-11.at.3.16.56.AM.mp4
- GetMostPopularMoviesUseCase
- GetTopRatedMoviesUseCase
- getMostPopularMovies() must return NetworkError DataState when the device is not connected to the internet
- getMostPopularMovies() must return Successfully DataState with list of ResultsDomainEntity when Successful API response
- getMostPopularMovies() must return Empty DataState when response return empty list
- getMostPopularMovies() must return Exception DataState when request exception
- getTopRatedMovies() must return NetworkError DataState when the device is not connected to the internet
- getTopRatedMovies() must return Successfully DataState with list of ResultsDomainEntity when Successful API response
- getTopRatedMovies() must return Empty DataState when response return empty list
- getTopRatedMovies() must return Exception DataState when request exception
- GetMostPopularMoviesUseCase() must invoke getMostPopularMovies from MoviesRepository
- GetTopRatedMoviesUseCase() must invoke getTopRatedMovies from MoviesRepository
- Map DataEntity to DomainEntity must DomainEntity
- resolvePosterPath must return full ImageUrl (BaseUrl + image size + PosterPath)
- App creation: 1H
- Creating UI: 3H
- Getting the most popular and top-rated movies from remote: 3H
- Handle error response: 1H
- Handle the movie fragment with its ViewModel: 3H
- Handle Configuration Changes: 1H
- Handle the movie details fragment with its ViewModel: 1H