From 1ae3f4ad964262d1d67edf77e3a6085ef7a8465b Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Mon, 2 Sep 2024 22:42:29 +0200 Subject: [PATCH] Add basic test for Geojson::ImportParser --- spec/fixtures/files/geojson/export.json | 2 +- .../files/geojson/export_same_points.json | 1 + spec/models/import_spec.rb | 3 ++- spec/services/exports/create_spec.rb | 2 +- spec/services/geojson/import_parser_spec.rb | 23 +++++++++++++++++++ 5 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/files/geojson/export_same_points.json create mode 100644 spec/services/geojson/import_parser_spec.rb diff --git a/spec/fixtures/files/geojson/export.json b/spec/fixtures/files/geojson/export.json index b4b978a4..b86f4b43 100644 --- a/spec/fixtures/files/geojson/export.json +++ b/spec/fixtures/files/geojson/export.json @@ -1 +1 @@ -{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}}]} \ No newline at end of file +{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.1","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459201,"latitude":"0.1","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.2","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459202,"latitude":"0.2","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.3","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459203,"latitude":"0.3","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.4","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459204,"latitude":"0.4","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.5","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459205,"latitude":"0.5","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.6","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459206,"latitude":"0.6","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.7","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459207,"latitude":"0.7","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.8","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459208,"latitude":"0.8","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.9","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459209,"latitude":"0.9","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"1.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459210,"latitude":"1.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}}]} diff --git a/spec/fixtures/files/geojson/export_same_points.json b/spec/fixtures/files/geojson/export_same_points.json new file mode 100644 index 00000000..b4b978a4 --- /dev/null +++ b/spec/fixtures/files/geojson/export_same_points.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}},{"type":"Feature","geometry":{"type":"Point","coordinates":["0.0","0.0"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"0.0","velocity":"MyString","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"0.0","mode":1,"inrids":[],"in_regions":[],"raw_data":"","city":null,"country":null,"geodata":{}}}]} \ No newline at end of file diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb index 0b3d8594..3ac6130d 100644 --- a/spec/models/import_spec.rb +++ b/spec/models/import_spec.rb @@ -16,7 +16,8 @@ RSpec.describe Import, type: :model do google_records: 2, google_phone_takeout: 3, gpx: 4, - immich_api: 5 + immich_api: 5, + geojson: 6 ) end end diff --git a/spec/services/exports/create_spec.rb b/spec/services/exports/create_spec.rb index 0c204154..5a50b6c7 100644 --- a/spec/services/exports/create_spec.rb +++ b/spec/services/exports/create_spec.rb @@ -18,7 +18,7 @@ RSpec.describe Exports::Create do it 'writes the data to a file' do create_export - file_path = Rails.root.join('spec/fixtures/files/geojson/export.json') + file_path = Rails.root.join('spec/fixtures/files/geojson/export_same_points.json') expect(File.read(file_path)).to eq(export_content) end diff --git a/spec/services/geojson/import_parser_spec.rb b/spec/services/geojson/import_parser_spec.rb new file mode 100644 index 00000000..f485b5da --- /dev/null +++ b/spec/services/geojson/import_parser_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Geojson::ImportParser do + describe '#call' do + subject(:service) { described_class.new(import, user.id).call } + + let(:user) { create(:user) } + + let(:user) { create(:user) } + + context 'when file content is an object' do + let(:file_path) { Rails.root.join('spec/fixtures/files/geojson/export.json') } + let(:raw_data) { JSON.parse(File.read(file_path)) } + let(:import) { create(:import, user:, name: 'geojson.json', raw_data:) } + + it 'creates new points' do + expect { service }.to change { Point.count }.by(10) + end + end + end +end