Location Reminder App (LRA) will make forgetting the milk (and anything else) a thing of the past! LRA allows you to select a point-of-interest(POI) on the map, and set for yourself a to-do reminder. With LRA in your pocket, now when you’re within a 100 metres (default geofence app setting of 100 meters) of the POI (or the grocery shop) you’ll get a notification reminding you to grab that milk - you’ll never have to endure a black coffee or dry cereal ever again.
The aim of this project is to showcase the following skills:-
Firebase Authentication API Integration
-
Google Maps API Integration
-
Testing:
- Unit Tests: ViewModel/LiveData, Test Double (Fake), Coroutines (see ReminderListViewModelTest and SaveReminderViewModelTest), and Room (see ReminderDaoTest)
- Integration Tests: Repository-Database (see RemindersLocalRepositoryTest), UI Controller-ViewModel (see ReminderListFragmentTest)
- Instrumentation(UI/E2E): Fragment Test (see SaveReminderFragmentTests), Acitivity Test (see RemindersActivityTest), Application Navigation (see AppNavigation)
Note: The app makes extensive use of asynchronous calls to the local database, and Data Binding Library to bind UI with ViewModels, hence IdlingResource, and DataBindingIdlingResource have been registered within the tests, respectively.
private val dataBindingIdlingResource = DataBindingIdlingResource()
@Before
fun registerIdlingResources() {
IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
IdlingRegistry.getInstance().register(dataBindingIdlingResource)
}
@After
fun unregisterIdlingResources() {
IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
IdlingRegistry.getInstance().unregister(dataBindingIdlingResource)
}