diff --git a/spec/serializers/points/geojson_serializer_spec.rb b/spec/serializers/points/geojson_serializer_spec.rb new file mode 100644 index 00000000..a532a192 --- /dev/null +++ b/spec/serializers/points/geojson_serializer_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Points::GeojsonSerializer do + describe '#call' do + subject(:serializer) { described_class.new(points).call } + + let(:points) { create_list(:point, 3) } + let(:expected_json) do + { + type: 'FeatureCollection', + features: points.map do |point| + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [point.longitude, point.latitude] + }, + properties: PointSerializer.new(point).call + } + end + } + end + + it 'returns JSON' do + expect(serializer).to eq(expected_json.to_json) + end + end +end diff --git a/spec/serializers/points/gpx_serializer.rb b/spec/serializers/points/gpx_serializer.rb new file mode 100644 index 00000000..9fee087e --- /dev/null +++ b/spec/serializers/points/gpx_serializer.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Points::GpxSerializer do + describe '#call' do + subject(:serializer) { described_class.new(points).call } + + let(:points) { create_list(:point, 3) } + let(:geojson_data) { Points::GeojsonSerializer.new(points).call } + let(:gpx) { GPX::GeoJSON.convert_to_gpx(geojson_data:) } + + it 'returns JSON' do + expect(serializer).to be_a(GPX::GPXFile) + end + end +end