@@ -25,7 +25,6 @@ import android.widget.Toast
2525import androidx.test.core.app.ApplicationProvider
2626import com.google.android.fhir.FhirEngine
2727import com.google.android.fhir.db.ResourceNotFoundException
28- import com.google.android.gms.location.LocationServices
2928import dagger.hilt.android.testing.BindValue
3029import dagger.hilt.android.testing.HiltAndroidRule
3130import dagger.hilt.android.testing.HiltAndroidTest
@@ -57,8 +56,10 @@ import org.robolectric.Shadows.shadowOf
5756import org.robolectric.android.controller.ActivityController
5857import org.robolectric.shadows.ShadowAlertDialog
5958import org.robolectric.shadows.ShadowToast
59+ import org.smartregister.fhircore.engine.configuration.ConfigType
6060import org.smartregister.fhircore.engine.configuration.ConfigurationRegistry
6161import org.smartregister.fhircore.engine.configuration.QuestionnaireConfig
62+ import org.smartregister.fhircore.engine.configuration.app.ApplicationConfiguration
6263import org.smartregister.fhircore.engine.configuration.app.LocationLogOptions
6364import org.smartregister.fhircore.engine.data.local.ContentCache
6465import org.smartregister.fhircore.engine.data.local.DefaultRepository
@@ -205,29 +206,29 @@ class QuestionnaireActivityTest : RobolectricTest() {
205206 fun `setupLocationServices should open location settings if location is disabled` () = runTest {
206207 // Questionnaire will be retrieved from the database
207208 fhirEngine.create(questionnaire.apply { id = questionnaireConfig.id })
209+ val initialConfig =
210+ configurationRegistry.retrieveConfiguration<ApplicationConfiguration >(ConfigType .Application )
211+ val logQuestionnaireGpsConfig =
212+ initialConfig.copy(logGpsLocation = listOf (LocationLogOptions .QUESTIONNAIRE ))
213+ configurationRegistry.configCacheMap[ConfigType .Application .name] = logQuestionnaireGpsConfig
214+
215+ shadowOf(context).grantPermissions(android.Manifest .permission.ACCESS_FINE_LOCATION )
216+ val locationManager = context.getSystemService(Context .LOCATION_SERVICE ) as LocationManager
217+ locationManager.setTestProviderEnabled(LocationManager .GPS_PROVIDER , false )
218+ locationManager.setTestProviderEnabled(LocationManager .NETWORK_PROVIDER , false )
219+
208220 setupActivity()
209221 assertTrue(
210222 questionnaireActivity.viewModel.applicationConfiguration.logGpsLocation.contains(
211223 LocationLogOptions .QUESTIONNAIRE ,
212224 ),
213225 )
214-
215- val fusedLocationProviderClient =
216- LocationServices .getFusedLocationProviderClient(questionnaireActivity)
217- assertNotNull(fusedLocationProviderClient)
218-
219- shadowOf(questionnaireActivity)
220- .grantPermissions(android.Manifest .permission.ACCESS_FINE_LOCATION )
221- val locationManager =
222- questionnaireActivity.getSystemService(Context .LOCATION_SERVICE ) as LocationManager
223- locationManager.setTestProviderEnabled(LocationManager .GPS_PROVIDER , false )
224- locationManager.setTestProviderEnabled(LocationManager .NETWORK_PROVIDER , false )
225-
226- questionnaireActivity.fetchLocation()
227226 val startedIntent = shadowOf(questionnaireActivity).nextStartedActivity
228227 val expectedIntent = Intent (Settings .ACTION_LOCATION_SOURCE_SETTINGS )
229228
230229 assertEquals(expectedIntent.component, startedIntent.component)
230+ // reset
231+ configurationRegistry.configCacheMap[ConfigType .Application .name] = initialConfig
231232 }
232233
233234 @Test
0 commit comments