From eea0b736a059dcc8fbfdc570bf38554e518f9b8c Mon Sep 17 00:00:00 2001 From: Callum Stott Date: Thu, 14 Oct 2021 12:25:48 +0100 Subject: [PATCH] Support retain mock accuracy in GeoPolyActivity --- .../org/odk/collect/geo/GeoPolyActivity.java | 3 ++- .../odk/collect/geo/GeoPolyActivityTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/geo/src/main/java/org/odk/collect/geo/GeoPolyActivity.java b/geo/src/main/java/org/odk/collect/geo/GeoPolyActivity.java index 9d7a9243f19..277de2cb3c2 100644 --- a/geo/src/main/java/org/odk/collect/geo/GeoPolyActivity.java +++ b/geo/src/main/java/org/odk/collect/geo/GeoPolyActivity.java @@ -340,7 +340,8 @@ private List parsePoints(String coords) { public void startInput() { inputActive = true; if (recordingEnabled && recordingAutomatic) { - locationTracker.start(); + boolean retainMockAccuracy = getIntent().getBooleanExtra(Constants.EXTRA_RETAIN_MOCK_ACCURACY, false); + locationTracker.start(retainMockAccuracy); recordPoint(map.getGpsLocation()); schedulerHandler = scheduler.scheduleAtFixedRate(() -> runOnUiThread(() -> { diff --git a/geo/src/test/java/org/odk/collect/geo/GeoPolyActivityTest.java b/geo/src/test/java/org/odk/collect/geo/GeoPolyActivityTest.java index c7c23e47b70..25d05ce3af4 100644 --- a/geo/src/test/java/org/odk/collect/geo/GeoPolyActivityTest.java +++ b/geo/src/test/java/org/odk/collect/geo/GeoPolyActivityTest.java @@ -20,6 +20,7 @@ import static org.mockito.Mockito.verify; import static java.util.Collections.emptyList; +import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -104,6 +105,25 @@ public void recordButton_should_beVisibleForManualMode() { })); } + @Test + public void startingInput_usingAutomaticMode_usesRetainMockAccuracyToStartLocationTracker() { + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), GeoPolyActivity.class); + + intent.putExtra(Constants.EXTRA_RETAIN_MOCK_ACCURACY, true); + ActivityScenario.launch(intent).onActivity(activity -> { + activity.updateRecordingMode(R.id.automatic_mode); + activity.startInput(); + verify(locationTracker).start(true); + }); + + intent.putExtra(Constants.EXTRA_RETAIN_MOCK_ACCURACY, false); + ActivityScenario.launch(intent).onActivity(activity -> { + activity.updateRecordingMode(R.id.automatic_mode); + activity.startInput(); + verify(locationTracker).start(true); + }); + } + private static class FakeMapFragment implements MapFragment { private PointListener pointListener;