From a83b8f62fe1588513ef4d8c06ee838ddf4ed7e9b Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 27 Oct 2019 13:16:50 +0100 Subject: [PATCH] Repaired Track importer tests. --- .../AbstractTestFileTrackImporter.java | 2 +- .../importer/GpxFileTrackImporterTest.java | 40 ++++++++++++------- .../importer/KmlFileTrackImporterTest.java | 27 ++++++++----- 3 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java index c0d5c0233..2eb1878f2 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java @@ -112,7 +112,7 @@ public abstract class AbstractTestFileTrackImporter { * @param lastTrack true if it is the last track in the gpx * @param trackId the track id */ - protected void expectUpdateTrack(ArgumentCaptor trackCaptor, boolean lastTrack, long trackId) { + protected void expectTrackUpdate(ArgumentCaptor trackCaptor, boolean lastTrack, long trackId) { contentProviderUtils.updateTrack(trackCaptor.capture()); when(contentProviderUtils.insertWaypoint((Waypoint) any())).thenReturn(WAYPOINT_ID_O_URI); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java index 3c5bbfdf0..9e5b289c5 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java @@ -34,6 +34,7 @@ import de.dennisguse.opentracks.util.PreferencesUtils; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyLong; +import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -84,8 +85,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { @Test public void testOneTrackOneSegment() throws Exception { - ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); - + // given Location location0 = createLocation(0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); Location location1 = createLocation(1, DATE_FORMAT_1.parse(TRACK_TIME_1).getTime()); @@ -96,24 +96,27 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); - expectUpdateTrack(trackCaptor, true, TRACK_ID_0); + ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); + expectTrackUpdate(trackCaptor, true, TRACK_ID_0); + // when InputStream inputStream = new ByteArrayInputStream(VALID_ONE_TRACK_ONE_SEGMENT_GPX.getBytes()); GpxFileTrackImporter gpxFileTrackImporter = new GpxFileTrackImporter(context, contentProviderUtils); long trackId = gpxFileTrackImporter.importFile(inputStream); + + // then Assert.assertEquals(TRACK_ID_0, trackId); + verify(contentProviderUtils, atLeastOnce()).updateTrack(trackCaptor.capture()); long time0 = DATE_FORMAT_0.parse(TRACK_TIME_0).getTime(); long time1 = DATE_FORMAT_1.parse(TRACK_TIME_1).getTime(); Assert.assertEquals(time1 - time0, trackCaptor.getValue().getTripStatistics().getTotalTime()); - verify(contentProviderUtils); verifyTrack(trackCaptor.getValue(), TRACK_NAME_0, TRACK_DESCRIPTION_0, time0); } @Test public void testOneTrackTwoSegments() throws Exception { - ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); - + // given Location location0 = createLocation(0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); when(contentProviderUtils.insertTrack((Track) any())).thenReturn(TRACK_ID_0_URI); @@ -122,11 +125,17 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); - expectUpdateTrack(trackCaptor, true, TRACK_ID_0); + ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); + expectTrackUpdate(trackCaptor, true, TRACK_ID_0); + + // when InputStream inputStream = new ByteArrayInputStream(VALID_ONE_TRACK_TWO_SEGMENTS_GPX.getBytes()); GpxFileTrackImporter gpxFileTrackImporter = new GpxFileTrackImporter(context, contentProviderUtils); long trackId = gpxFileTrackImporter.importFile(inputStream); + + // then + verify(contentProviderUtils, atLeastOnce()).updateTrack(trackCaptor.capture()); Assert.assertEquals(TRACK_ID_0, trackId); long time0 = DATE_FORMAT_0.parse(TRACK_TIME_0).getTime(); @@ -135,14 +144,12 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { long time3 = DATE_FORMAT_1.parse(TRACK_TIME_3).getTime(); Assert.assertEquals(time1 - time0 + time3 - time2, trackCaptor.getValue().getTripStatistics().getTotalTime()); - verify(contentProviderUtils); verifyTrack(trackCaptor.getValue(), TRACK_NAME_0, TRACK_DESCRIPTION_0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); } @Test public void testOneTrackTwoSegmentsNoTime() { - ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); - + // given when(contentProviderUtils.insertTrack((Track) any())).thenReturn(TRACK_ID_0_URI); expectFirstTrackPoint(null, TRACK_ID_0, TRACK_POINT_ID_0); @@ -150,15 +157,20 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); - expectUpdateTrack(trackCaptor, true, TRACK_ID_0); + ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); + expectTrackUpdate(trackCaptor, true, TRACK_ID_0); + + // when InputStream inputStream = new ByteArrayInputStream(VALID_ONE_TRACK_TWO_SEGMENTS_NO_TIME_GPX.getBytes()); GpxFileTrackImporter gpxFileTrackImporter = new GpxFileTrackImporter(context, contentProviderUtils); long trackId = gpxFileTrackImporter.importFile(inputStream); - Assert.assertEquals(TRACK_ID_0, trackId); - Assert.assertEquals(0, trackCaptor.getValue().getTripStatistics().getTotalTime()); - verify(contentProviderUtils); + // then + verify(contentProviderUtils, atLeastOnce()).updateTrack(trackCaptor.capture()); + Assert.assertEquals(TRACK_ID_0, trackId); + + Assert.assertEquals(0, trackCaptor.getValue().getTripStatistics().getTotalTime()); verifyTrack(trackCaptor.getValue(), TRACK_NAME_0, TRACK_DESCRIPTION_0, -1L); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java index 3fedfbe90..4b1861775 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java @@ -32,6 +32,7 @@ import de.dennisguse.opentracks.content.Track; import de.dennisguse.opentracks.util.PreferencesUtils; import static org.mockito.Mockito.any; +import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -68,8 +69,7 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { @Test public void testOneTrackOneSegment() throws Exception { - ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); - + // given Location location0 = createLocation(0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); Location location1 = createLocation(1, DATE_FORMAT_1.parse(TRACK_TIME_1).getTime()); @@ -77,27 +77,31 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { expectFirstTrackPoint(location0, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint(new Location[]{location1}, eq(1), eq(TRACK_ID_0))).thenReturn(1); + when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); - expectUpdateTrack(trackCaptor, true, TRACK_ID_0); + ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); + expectTrackUpdate(trackCaptor, true, TRACK_ID_0); + + // when InputStream inputStream = new ByteArrayInputStream(VALID_ONE_TRACK_ONE_SEGMENT_GPX.getBytes()); KmlFileTrackImporter kmlFileTrackImporter = new KmlFileTrackImporter(context, TRACK_ID_0, contentProviderUtils); long trackId = kmlFileTrackImporter.importFile(inputStream); + + // then + verify(contentProviderUtils, atLeastOnce()).updateTrack(trackCaptor.capture()); Assert.assertEquals(TRACK_ID_0, trackId); long time0 = DATE_FORMAT_0.parse(TRACK_TIME_0).getTime(); long time1 = DATE_FORMAT_1.parse(TRACK_TIME_1).getTime(); Assert.assertEquals(time1 - time0, trackCaptor.getValue().getTripStatistics().getTotalTime()); - verify(contentProviderUtils); verifyTrack(trackCaptor.getValue(), TRACK_NAME_0, TRACK_DESCRIPTION_0, time0); } @Test public void testOneTrackTwoSegments() throws Exception { - ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); - + // given Location location0 = createLocation(0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); contentProviderUtils.clearTrack(context, TRACK_ID_0); @@ -107,11 +111,17 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); - expectUpdateTrack(trackCaptor, true, TRACK_ID_0); + ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); + expectTrackUpdate(trackCaptor, true, TRACK_ID_0); + + // when InputStream inputStream = new ByteArrayInputStream(VALID_ONE_TRACK_TWO_SEGMENTS_GPX.getBytes()); KmlFileTrackImporter kmlFileTrackImporter = new KmlFileTrackImporter(context, TRACK_ID_0, contentProviderUtils); long trackId = kmlFileTrackImporter.importFile(inputStream); + + // then + verify(contentProviderUtils, atLeastOnce()).updateTrack(trackCaptor.capture()); Assert.assertEquals(TRACK_ID_0, trackId); long time0 = DATE_FORMAT_0.parse(TRACK_TIME_0).getTime(); @@ -120,7 +130,6 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { long time3 = DATE_FORMAT_1.parse(TRACK_TIME_3).getTime(); Assert.assertEquals(time1 - time0 + time3 - time2, trackCaptor.getValue().getTripStatistics().getTotalTime()); - verify(contentProviderUtils); verifyTrack(trackCaptor.getValue(), TRACK_NAME_0, TRACK_DESCRIPTION_0, DATE_FORMAT_0.parse(TRACK_TIME_0).getTime()); } }