Location Reminder allows user to save a to-do reminder at a point of interest on Google Maps
Location Reminder
Note: This project constitutes Udacity’s Android Kotlin Developer Nano-degree Program
Description
Do you recall the moment you walked past a local grocery store, and forgot to grab the milk? Not anymore!
Location Reminder App aims to address exactly that – where user can select a point-of-interest(POI) on the map, and set for themselves a to-do reminder. When the user enters the geofence (set to: 100 meters) of the POI, the app triggers a notification.
Topics/Skills covered as part of this project
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-Repository (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)
}