From 958c792bf12b44695a456e4c73f03664f9cc0067 Mon Sep 17 00:00:00 2001 From: Max Stockner Date: Tue, 16 Jul 2024 23:06:55 +0200 Subject: [PATCH] A GPX File can have multiple tracks --- app/services/gpx/track_parser.rb | 36 +- .../files/gpx/gpx_track_multiple_tracks.gpx | 3291 +++++++++++++++++ spec/services/gpx/track_parser_spec.rb | 11 + 3 files changed, 3328 insertions(+), 10 deletions(-) create mode 100644 spec/fixtures/files/gpx/gpx_track_multiple_tracks.gpx diff --git a/app/services/gpx/track_parser.rb b/app/services/gpx/track_parser.rb index 98e45b95..db7b8bb3 100644 --- a/app/services/gpx/track_parser.rb +++ b/app/services/gpx/track_parser.rb @@ -10,22 +10,35 @@ class Gpx::TrackParser end def call - segments = json['gpx']['trk']['trkseg'] + tracks = json['gpx']['trk'] + tracks_arr = tracks.is_a?(Array) ? tracks : [tracks] - if segments.is_a?(Array) - segments.each do |segment| - segment['trkpt'].each { create_point(_1) } - end - else - segments['trkpt'].each { create_point(_1) } - end + tracks_arr + .map { parse_track(_1) } + .flatten + .reduce { |result, points| result.merge(points) { _2 + _3 } } end private + def parse_track(track) + segments = track['trkseg'] + segments_arr = segments.is_a?(Array) ? segments : [segments] + + segments_arr.map do |segment| + trackpoints = segment['trkpt'] + + points = trackpoints.reduce(0) { _1 + create_point(_2) } + doubles = trackpoints.size - points + processed = points + doubles + + { raw_points: trackpoints.size, points:, doubles:, processed: } + end + end + def create_point(point) - return if point['lat'].blank? || point['lon'].blank? || point['time'].blank? - return if point_exists?(point) + return 0 if point['lat'].blank? || point['lon'].blank? || point['time'].blank? + return 0 if point_exists?(point) Point.create( latitude: point['lat'].to_d, @@ -33,8 +46,11 @@ class Gpx::TrackParser altitude: point['ele'].to_i, timestamp: Time.parse(point['time']).to_i, import_id: import.id, + raw_data: point, user_id: ) + + 1 end def point_exists?(point) diff --git a/spec/fixtures/files/gpx/gpx_track_multiple_tracks.gpx b/spec/fixtures/files/gpx/gpx_track_multiple_tracks.gpx new file mode 100644 index 00000000..757aaffd --- /dev/null +++ b/spec/fixtures/files/gpx/gpx_track_multiple_tracks.gpx @@ -0,0 +1,3291 @@ + + + + + 2024-04-21_10-55_Sun + + + + 2024-04-21_10-55 + + + 1066.4 + + 3.8 + + 2.9 + + + + 1066.4 + + 3.8 + + 4.1 + + + + 1064.8 + + 3.8 + + 4.2 + + + + 1062.8 + + 3.8 + + 5.8 + + + + 1059.8 + + 3.8 + + 7.3 + + + + 1060.6 + + 3.8 + + 8 + + + + 1060.9 + + 3.8 + + 7.4 + + + + 1060 + + 3.8 + + 7.8 + + + + 1058.2 + + 3.8 + + 5.3 + + + + 1053.7 + + 3.8 + + 7.1 + + + + 1055.1 + + 3.8 + + 6.3 + + + + 1056.1 + + 3.8 + + 7.1 + + + + 1053.5 + + 3.8 + + 5.9 + + + + 1054.6 + + 3.8 + + 2.8 + + + + 1053.8 + + 3.8 + + 4.5 + + + + 1053.2 + + 3.8 + + 5.4 + + + + 1054.2 + + 3.8 + + 5 + + + + 1053.7 + + 3.8 + + 6 + + + + 1053.9 + + 3.8 + + 5.5 + + + + 1054.9 + + 3.8 + + 3 + + + + 1056.4 + + 3.8 + + 4.3 + + + + 1057.2 + + 3.8 + + 2.9 + + + + 1057.5 + + 3.8 + + 3.9 + + + + 1059.1 + + 3.8 + + 6.6 + + + + 1062 + + 3.8 + + 5.9 + + + + 1064.6 + + 3.8 + + 3.9 + + + + 1065.8 + + 3.8 + + 5.3 + + + + 1067.7 + + 3.8 + + 5.4 + + + + 1068.6 + + 3.8 + + 4.1 + + + + 1068.2 + + 3.8 + + 0.9 + + + + 1069.5 + + 3.8 + + 1.5 + + + + 1069.4 + + 3.8 + + 0.1 + + + + 1069.4 + + 3.8 + + 0.1 + + + + 1069.4 + + 3.8 + + 0 + + + + 1068.9 + + 3.8 + + 2 + + + + 1069.9 + + 3.8 + + 4.9 + + + + 1070 + + 3.8 + + 3.4 + + + + 1070.8 + + 3.8 + + 2.5 + + + + 1072.1 + + 3.8 + + 2.3 + + + + 1072.3 + + 3.8 + + 3.2 + + + + 1073.2 + + 3.8 + + 2.2 + + + + 1072.8 + + 3.8 + + 2.6 + + + + 1073.9 + + 3.8 + + 2.2 + + + + 1075.8 + + 3.8 + + 3.7 + + + + 1078.4 + + 3.8 + + 5.2 + + + + 1079.7 + + 3.8 + + 5.7 + + + + 1084.2 + + 3.8 + + 6.3 + + + + 1085.7 + + 3.8 + + 3 + + + + 1086.8 + + 3.8 + + 0.8 + + + + 1086.1 + + 3.9 + + 0.6 + + + + 1085.8 + + 3.8 + + 0.9 + + + + 1086.8 + + 3.8 + + 0.6 + + + + 1086.3 + + 3.8 + + 2.5 + + + + 1088.1 + + 3.8 + + 1.6 + + + + 1087.7 + + 3.8 + + 0.6 + + + + 1087.3 + + 3.8 + + 1.9 + + + + 1086.6 + + 3.8 + + 0.3 + + + + 1086.4 + + 3.8 + + 0.2 + + + + 1085.9 + + 3.8 + + 0.5 + + + + 1085.5 + + 3.8 + + 0.6 + + + + 1084.2 + + 3.8 + + 1 + + + + 1085.8 + + 3.8 + + 0.1 + + + + + + 1089.1 + + 3 + + 0.1 + + + + 1089.2 + + 3.4 + + 0 + + + + 1089.2 + + 3.8 + + 0 + + + + 1089.2 + + 3.8 + + 0 + + + + 1089.2 + + 3.8 + + 0 + + + + 1089.2 + + 3.8 + + 0 + + + + 1089.6 + + 3.8 + + 0.5 + + + + 1089.6 + + 3.8 + + 0 + + + + 1089.9 + + 3.8 + + 2.8 + + + + 1088.4 + + 3.8 + + 2.9 + + + + 1088.1 + + 3.8 + + 3.6 + + + + 1086.9 + + 3.8 + + 3.5 + + + + 1086.4 + + 3.8 + + 3.6 + + + + 1085.4 + + 3.8 + + 0.7 + + + + 1085.8 + + 3.8 + + 0.1 + + + + 1085.6 + + 3.8 + + 0 + + + + 1085.6 + + 3.8 + + 0 + + + + 1085.6 + + 3.8 + + 0 + + + + 1084.1 + + 3.8 + + 5.8 + + + + 1081.1 + + 3.8 + + 6.4 + + + + 1081 + + 3.8 + + 6.2 + + + + 1079 + + 3.8 + + 5.3 + + + + 1076.6 + + 3.8 + + 4 + + + + 1074.3 + + 3.8 + + 7.5 + + + + 1071.8 + + 3.8 + + 7.3 + + + + 1069.4 + + 3.8 + + 6.8 + + + + 1066.8 + + 3.8 + + 5.7 + + + + 1063.1 + + 3.8 + + 6.1 + + + + 1061.3 + + 3.8 + + 7.4 + + + + 1058.7 + + 3.8 + + 6.6 + + + + 1056.3 + + 3.8 + + 6.7 + + + + 1052.6 + + 3.8 + + 6.5 + + + + 1054.2 + + 3.8 + + 5.6 + + + + 1054.6 + + 3.8 + + 1.6 + + + + 1054.1 + + 3.8 + + 1.7 + + + + 1054.1 + + 3.9 + + 0.1 + + + + 1053.9 + + 3.8 + + 0 + + + + 1054.7 + + 3.8 + + 3.1 + + + + 1051.4 + + 3.8 + + 3.1 + + + + 1048.3 + + 3.8 + + 2.2 + + + + 1046.8 + + 3.8 + + 1.1 + + + + 1044.3 + + 3.8 + + 1.7 + + + + 1043.5 + + 3.8 + + 0.2 + + + + 1043.1 + + 3.8 + + 0.1 + + + + 1043 + + 3.8 + + 0.3 + + + + 1043 + + 3.8 + + 0.1 + + + + 1043.4 + + 3.8 + + 0.1 + + + + 1043.2 + + 3.8 + + 0.3 + + + + 1042.2 + + 3.8 + + 0.1 + + + + 1041 + + 3.8 + + 1.7 + + + + 1039.8 + + 3.8 + + 1.9 + + + + 1038.7 + + 3.8 + + 0.3 + + + + 1037 + + 3.8 + + 0.3 + + + + 1036.9 + + 3.8 + + 0 + + + + 1036.9 + + 3.8 + + 0 + + + + 1035.5 + + 3.8 + + 3.7 + + + + 1032.2 + + 3.8 + + 3.3 + + + + 1029.1 + + 3.8 + + 3.3 + + + + 1025.4 + + 3.8 + + 2.4 + + + + 1022.2 + + 3.8 + + 6 + + + + 1019.4 + + 3.8 + + 4.6 + + + + 1017 + + 3.8 + + 4.6 + + + + 1014.6 + + 3.8 + + 1.8 + + + + 1011.3 + + 3.8 + + 1.4 + + + + 1010.4 + + 3.8 + + 0.8 + + + + 1006.2 + + 3.8 + + 1 + + + + 1007.5 + + 3.8 + + 0.2 + + + + 1007.7 + + 3.8 + + 0.1 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.7 + + 3.8 + + 0 + + + + 1007.5 + + 3.8 + + 0.8 + + + + 1007.5 + + 3.8 + + 0.2 + + + + 1005.9 + + 3.8 + + 0.2 + + + + 1006.2 + + 3.9 + + 0.6 + + + + 1005.9 + + 3.8 + + 0.6 + + + + 1007.4 + + 3.8 + + 0.4 + + + + 1007.1 + + 3.8 + + 0.5 + + + + 1002.9 + + 3.8 + + 0.6 + + + + 1002.7 + + 3.8 + + 1.1 + + + + 1002.6 + + 3.8 + + 0.3 + + + + 1004.1 + + 3.8 + + 0.1 + + + + 1004.4 + + 3.8 + + 0 + + + + 1004.4 + + 3.8 + + 0 + + + + 1002.6 + + 3.8 + + 0.9 + + + + 1002.3 + + 3.8 + + 1.4 + + + + 1001.3 + + 3.8 + + 0.7 + + + + 1000.8 + + 3.8 + + 0.7 + + + + 997.5 + + 3.8 + + 1.5 + + + + 997.2 + + 3.8 + + 0.2 + + + + 996.2 + + 3.8 + + 1.8 + + + + 993.6 + + 3.8 + + 1.6 + + + + 993.9 + + 3.8 + + 0.4 + + + + 990.8 + + 3.8 + + 4.4 + + + + 990.6 + + 3.8 + + 0.1 + + + + 990.4 + + 3.8 + + 0.6 + + + + 989.6 + + 3.8 + + 0.2 + + + + 989.8 + + 3.8 + + 0.1 + + + + 989.7 + + 3.8 + + 0 + + + + 989.6 + + 3.8 + + 0.6 + + + + 989.3 + + 3.8 + + 0.4 + + + + 989.9 + + 3.8 + + 0.2 + + + + 990.2 + + 3.8 + + 0 + + + + 990.2 + + 3.8 + + 0 + + + + 990.6 + + 3.8 + + 3 + + + + 992.4 + + 3.8 + + 3.5 + + + + 991.3 + + 3.8 + + 3.4 + + + + 992.4 + + 3.8 + + 1.2 + + + + 991.9 + + 3.8 + + 0.1 + + + + 991.6 + + 4.2 + + 0 + + + + 991.7 + + 4.4 + + 0 + + + + 991.7 + + 4.9 + + 0 + + + + 991.7 + + 5.5 + + 0 + + + + 991.7 + + 4.8 + + 0 + + + + 991.7 + + 4.1 + + 0 + + + + 992 + + 4.1 + + 1.4 + + + + 992.9 + + 4.5 + + 3.8 + + + + 995.9 + + 3.9 + + 3.4 + + + + 997 + + 3.8 + + 3 + + + + 995.6 + + 3.8 + + 4.2 + + + + 996.7 + + 3.8 + + 3.8 + + + + 995.5 + + 3.8 + + 4.9 + + + + 994.2 + + 3.8 + + 3.7 + + + + 995.1 + + 3.8 + + 3.6 + + + + 993 + + 3.8 + + 5.7 + + + + 991.6 + + 3.8 + + 5.3 + + + + 986.7 + + 3.8 + + 5.4 + + + + 982.3 + + 3.8 + + 8 + + + + 981.5 + + 3.8 + + 4.4 + + + + 983.4 + + 3.8 + + 5.4 + + + + 984.4 + + 3.8 + + 4.3 + + + + 983.4 + + 3.8 + + 3.3 + + + + 984.5 + + 3.8 + + 4.2 + + + + 985.3 + + 3.8 + + 3 + + + + 984.4 + + 3.8 + + 1.7 + + + + 982.6 + + 3.8 + + 3.3 + + + + 980.2 + + 3.8 + + 5.1 + + + + 976.3 + + 3.8 + + 10.9 + + + + 970.9 + + 3.8 + + 7.6 + + + + 969.7 + + 3.8 + + 0.9 + + + + 969.7 + + 3.8 + + 0.1 + + + + 969.6 + + 3.9 + + 0.7 + + + + 969.7 + + 3.8 + + 0.1 + + + + 969.1 + + 3.8 + + 0 + + + + 969.1 + + 3.8 + + 0 + + + + 969.1 + + 3.8 + + 0 + + + + 969.1 + + 3.8 + + 0 + + + + 968.3 + + 3.8 + + 0.2 + + + + 968.7 + + 3.8 + + 0.1 + + + + 969 + + 3.8 + + 0 + + + + 966.7 + + 3.8 + + 1.7 + + + + 966.5 + + 3.8 + + 0.9 + + + + 966.7 + + 3.8 + + 0.4 + + + + 966.7 + + 4.4 + + 0 + + + + 965.3 + + 3.8 + + 2.1 + + + + 962.7 + + 3.8 + + 9 + + + + 962.5 + + 3.8 + + 8.8 + + + + 964.3 + + 3.8 + + 8.3 + + + + 963.8 + + 3.8 + + 7.5 + + + + 965.3 + + 3.8 + + 7 + + + + 964.6 + + 3.8 + + 7.3 + + + + 965.3 + + 3.8 + + 7.5 + + + + 965.9 + + 3.8 + + 7.4 + + + + 965.5 + + 3.8 + + 7.1 + + + + 966 + + 3.8 + + 3.8 + + + + 964.6 + + 3.8 + + 2 + + + + 964.3 + + 3.8 + + 0.1 + + + + 964.5 + + 3.8 + + 0 + + + + 964.5 + + 3.8 + + 0 + + + + 964.5 + + 3.8 + + 0 + + + + 964.5 + + 3.8 + + 0 + + + + 966.5 + + 3.8 + + 0.9 + + + + 966.6 + + 3.8 + + 0.1 + + + + 966 + + 3.8 + + 0.1 + + + + 966.1 + + 3.8 + + 0 + + + + 966 + + 3.8 + + 0 + + + + 965.6 + + 3.8 + + 0.8 + + + + 965.8 + + 3.8 + + 0.4 + + + + 967 + + 3.8 + + 2.5 + + + + 967.4 + + 3.9 + + 0.1 + + + + 967.3 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.9 + + 3.8 + + 0 + + + + 967.2 + + 3.8 + + 1.4 + + + + 966.9 + + 3.8 + + 0.1 + + + + 967.1 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 967.1 + + 3.8 + + 0 + + + + 966.9 + + 3.8 + + 0.4 + + + + 967.3 + + 3.8 + + 0.1 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.8 + + 3.8 + + 0 + + + + 967.5 + + 3.8 + + 0.6 + + + + 968.5 + + 3.8 + + 0.1 + + + + 967.7 + + 3.8 + + 1.4 + + + + 968.5 + + 3.8 + + 1.4 + + + + 969.3 + + 3.8 + + 2.3 + + + + 970.3 + + 3.8 + + 1.7 + + + + 970.3 + + 3.8 + + 1.4 + + + + 970.7 + + 3.9 + + 1 + + + + 972.4 + + 3.8 + + 0.1 + + + + 973.6 + + 3.8 + + 0 + + + + 973.7 + + 3.8 + + 0 + + + + 974.2 + + 3.8 + + 1.2 + + + + 975.7 + + 3.8 + + 2.8 + + + + 977.4 + + 3.9 + + 3 + + + + 981 + + 3.8 + + 3.1 + + + + 984.9 + + 3.8 + + 2.9 + + + + 987 + + 3.8 + + 1.7 + + + + 988.2 + + 3.8 + + 3.4 + + + + 989.6 + + 3.8 + + 4 + + + + 991.6 + + 3.8 + + 3.3 + + + + 992.5 + + 3.8 + + 4.8 + + + + 995.7 + + 3.8 + + 3 + + + + 999.5 + + 3.8 + + 2.8 + + + + 1002.7 + + 3.8 + + 2.7 + + + + 1005.8 + + 3.8 + + 3.2 + + + + 1008.5 + + 3.8 + + 3.6 + + + + 1012.1 + + 3.8 + + 3.4 + + + + 1015.9 + + 3.8 + + 3.9 + + + + 1019.1 + + 3.8 + + 4.1 + + + + 1021.1 + + 3.8 + + 3.5 + + + + 1021.4 + + 3.8 + + 4.4 + + + + 1023.1 + + 3.8 + + 5.3 + + + + 1022.9 + + 3.8 + + 3.4 + + + + 1025.2 + + 3.8 + + 2.3 + + + + 1023.2 + + 3.8 + + 3.5 + + + + 1023 + + 3.8 + + 0.1 + + + + 1023.1 + + 3.8 + + 0.2 + + + + 1023.8 + + 3.8 + + 0.1 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.7 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1023.6 + + 3.8 + + 0 + + + + 1053.6 + + 10.3 + + 0.7 + + + + 1037.4 + + 4.3 + + 0.2 + + + + 1036.7 + + 3.8 + + 0.1 + + + + 1037.2 + + 3.3 + + 0.1 + + + + 1038 + + 3 + + 0.1 + + + + 1038.2 + + 3 + + 0.1 + + + + 1038.2 + + 3.4 + + 0.1 + + + + 1038.8 + + 3.8 + + 0 + + + + 1039.2 + + 3.8 + + 0.3 + + + + 1038.5 + + 3.8 + + 0.2 + + + + 1038.2 + + 6.9 + + + + + + + + 1091.2 + + 7.2 + + 0.2 + + + + 1088.4 + + 5 + + 0.1 + + + + 1095.6 + + 8.4 + + 0.2 + + + + 1065.6 + + 4.9 + + 2.9 + + + + 1071.3 + + 5 + + 0.1 + + + + 1070.4 + + 3.8 + + 0.1 + + + + 1070.7 + + 3.8 + + 0 + + + + 1070.7 + + 3.8 + + 0 + + + + 1070.7 + + 3.8 + + 0 + + + + 1070.7 + + 3.8 + + 0 + + + + 1070.6 + + 3.8 + + 0 + + + + 1070.6 + + 3.8 + + 0 + + + + 1070.6 + + 3.8 + + 0 + + + + 1070.4 + + 3.8 + + 0.6 + + + + 1070.8 + + 3.8 + + 0.1 + + + + 1070.7 + + 3.8 + + 0.1 + + + + 1070.7 + + 3.8 + + 0 + + + + + + 975.4 + + 14.5 + + 0.7 + + + + 974.7 + + 4 + + 0.5 + + + + 972.5 + + 3.8 + + 0.1 + + + + 971 + + 3.8 + + 0.9 + + + + 971.1 + + 3.1 + + 0.1 + + + + 971.5 + + 3 + + 0.1 + + + + 928 + + 8.1 + + 0.2 + + + + 928 + + 4.6 + + 0.3 + + + + 973.4 + + 3.7 + + 0.2 + + + + 971.6 + + 3 + + 0 + + + + 971.9 + + 3 + + 0 + + + + 971.9 + + 3.5 + + 0 + + + + 971.7 + + 3.8 + + 0 + + + + 971.4 + + 3.8 + + 0.4 + + + + 971.9 + + 3.8 + + 0.1 + + + + 971.4 + + 3.8 + + 0.4 + + + + 970.6 + + 4.1 + + 0.1 + + + + 971.3 + + 3 + + 0 + + + + 971.4 + + 3 + + 0 + + + + 971.4 + + 3 + + 0 + + + + + + false + true + 0.0 + no_split + none + none + top + #ff0000 + thin + solid + + \ No newline at end of file diff --git a/spec/services/gpx/track_parser_spec.rb b/spec/services/gpx/track_parser_spec.rb index 9efb919a..d4011deb 100644 --- a/spec/services/gpx/track_parser_spec.rb +++ b/spec/services/gpx/track_parser_spec.rb @@ -15,6 +15,7 @@ RSpec.describe Gpx::TrackParser do context 'when file has a single segment' do it 'creates points' do expect { parser }.to change { Point.count }.by(301) + expect(parser).to eq({ doubles: 4, points: 301, processed: 305, raw_points: 305 }) end end @@ -23,8 +24,18 @@ RSpec.describe Gpx::TrackParser do it 'creates points' do expect { parser }.to change { Point.count }.by(558) + expect(parser).to eq({ doubles: 0, points: 558, processed: 558, raw_points: 558 }) end end end + + context 'when file has multiple tracks' do + let(:file_path) { Rails.root.join('spec/fixtures/files/gpx/gpx_track_multiple_tracks.gpx') } + + it 'creates points' do + expect { parser }.to change { Point.count }.by(407) + expect(parser).to eq({ doubles: 0, points: 407, processed: 407, raw_points: 407 }) + end + end end end