/apollo-agriculture

Show weather data for the current location [Apollo Agriculture Interview Solution], for the Senior Android Engineer Role

Primary LanguageKotlin

Apollo Agriculture Android Take Home Assignment

Writing Apollo Agriculture App using Android Architecture Components, in 100% Kotlin, using Android Jetpack Components, and in Compose 🚀

Requirements

  • Add a second screen to the app with weather data for the current location. Use the following initial wireframe we've made:

  • The output from our weather API looks like this:

{
 "today": {
 "lowTemp": 23.36,
 "highTemp": 24.66,
 "icon": "CLEAR_DAY",
 "description": "clear sky"
 },
 "tomorrow": {
 "lowTemp": 23.63,
 "highTemp": 24.9,
 "icon": "SCATTERED_CLOUDS_DAY",
 "description": "scattered clouds"
 },
 "dayAfterTomorrow": {
 "lowTemp": 22.73,
 "highTemp": 25.14,
 "icon": "BROKEN_OVERCAST_CLOUDS_DAY",
 "description": "broken clouds"
 }
}

Feel free to use however you think best in the app, it's also available at https://apollo-web-public.s3.eu-west-1.amazonaws.com/eng/android-takehomeassignment/weather.json so feel free to add an API client.

  • Documentation for the API is available in API.md in this folder.
  • Use any libraries for Android that you want, but we will need to be able to build your code to evaluate it.

A few hiccups

I noticed the previews are not rendering since I am injecting the viewmodel in the composables. I need to research and find a way to fix the previews. Found the issue here

I am not able to test the Room setup too, so I will ignore the implementation on the app. The reason is, I am using JUnit5 and Roboelectric doesn't support it.

Prerequisites - Unit Tests

Spek

This allows us to easily define specifications in a clear, understandable, human-readable way. This framework allows you to describe tests and expected behaviors in a more readable way.

To run tests in Android Studio you need to install Spek Framework plugin (search for Spek Framework).

The UI test run normally, either on a device or an emulator, without any special plugin or dependency.

How it's built

Screenshots

I added some screenshots in the screenshots folder, in the root directory of the project. Added some GIFs to also show end to end test on the app

Light Dark GIF