diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java index 27359fbe7..c97abc6d7 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java @@ -12,6 +12,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import de.dennisguse.opentracks.content.data.TrackPoint; +import de.dennisguse.opentracks.stats.TrackStatistics; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; @@ -25,7 +26,10 @@ public class TrackRecordingServiceNotificationManagerTest { private final Context context = ApplicationProvider.getApplicationContext(); @Mock - private TrackPoint locationMock; + private TrackPoint trackPointMock; + + @Mock + private TrackStatistics trackStatisticsMock; @Mock private NotificationCompat.Builder notificationCompatBuilder; @@ -35,18 +39,20 @@ public class TrackRecordingServiceNotificationManagerTest { @Test public void updateLocation_triggersAlertOnlyOnFirstInaccurateLocation() { - when(locationMock.hasAccuracy()).thenReturn(true); - when(locationMock.getAccuracy()).thenReturn(999f); + when(trackPointMock.hasAccuracy()).thenReturn(true); + when(trackPointMock.getAccuracy()).thenReturn(999f); + when(trackStatisticsMock.getTotalDistance()).thenReturn(0d); when(notificationCompatBuilder.setContentText(anyString())).thenReturn(notificationCompatBuilder); when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())).thenReturn(notificationCompatBuilder); TrackRecordingServiceNotificationManager subject = new TrackRecordingServiceNotificationManager(notificationManager, notificationCompatBuilder); + subject.setMetricUnits(true); // when - subject.updateTrackPoint(context, locationMock, 100); - subject.updateTrackPoint(context, locationMock, 100); - subject.updateTrackPoint(context, locationMock, 1000); - subject.updateTrackPoint(context, locationMock, 100); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 1000); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); // then verify(notificationCompatBuilder, times(6)).setOnlyAlertOnce(true); diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java index a318b8e73..b611ed3e4 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java @@ -5,7 +5,6 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; -import android.content.SharedPreferences; import android.os.Build; import androidx.annotation.VisibleForTesting; @@ -13,9 +12,7 @@ import androidx.core.app.NotificationCompat; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.data.TrackPoint; -import de.dennisguse.opentracks.fragments.StatisticsRecordedFragment; import de.dennisguse.opentracks.stats.TrackStatistics; -import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.StringUtils; /** @@ -71,7 +68,7 @@ class TrackRecordingServiceNotificationManager { void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, int recordingGpsAccuracy) { String formattedAccuracy = context.getString(R.string.value_none); if (trackPoint.hasAccuracy()) { - formattedAccuracy = StringUtils.formatDistance(context, trackPoint.getAccuracy(), PreferencesUtils.isMetricUnits(PreferencesUtils.getSharedPreferences(context), context)); + formattedAccuracy = StringUtils.formatDistance(context, trackPoint.getAccuracy(), metricUnits); boolean currentLocationWasAccurate = trackPoint.getAccuracy() < recordingGpsAccuracy; boolean shouldAlert = !currentLocationWasAccurate && previousLocationWasAccurate;