A simplistic Android Twitter client demonstrating the use of the MVP pattern, unit tests with pure JUnit4 and Robolectric, UI testing using UI Automator and Espresso, usage of various libraries such as Dagger 2, RxJava, Retrofit, Twitter SDK, RecyclerView, Butter Knife, Picasso, Joda-Time, etc
The project uses the MVP pattern for clear separation of concerns and to maximise testability
Simple model classes to represent the relevant information for the app
The only presenter for now is the TimelinePresenter, responsible to manage data loading/saving, update the view and handle user interaction events
TwitterService handles communication with the Twitter API
Here the callback interfaces have been converted to RxJava Observables and the Twitter SDK objects converted to our models
All UI related classes live here
Activities
Adapters
TimelineConverter converts from cumbersome Tweets to our TimelineItem models
View interfaces implemented by Activities
The project demonstrates different testing techniques
Simple JUnit4 tests are used to test presenters - TimelinePresenterTest.java
Robolectric is used when Android framework classes are required - TimelineConverter.java
UI Automator is used when UI tests need to interact with activities outside the app - LoginActivityTest
Espresso is used when only interacting with activities of the app - TimelineActivityTest
Not in any particular order
Special thanks to Twitter for Fabric