require 'spec_helper'

describe ApiGeo::API do
  describe '.regions', vcr: { cassette_name: 'api_geo_regions' } do
    subject { described_class.regions }

    it { expect(subject.size).to eq 18 }
  end

  describe '.departements', vcr: { cassette_name: 'api_geo_departements' } do
    subject { described_class.departements }

    it { expect(subject.size).to eq 101 }
  end

  describe '.pays' do
    subject { described_class.pays }
    let(:pays) {
      JSON.parse(File.open('app/lib/api_geo/pays.json').read, symbolize_names: true)
    }

    it { is_expected.to eq pays }
  end

  describe '.search_rpg', vcr: { cassette_name: 'api_geo_search_rpg' } do
    let(:coordinates) do
      [
        [
          2.3945903778076176,
          46.53312237252731
        ],
        [
          2.394933700561524,
          46.532590956418076
        ],
        [
          2.3948478698730473,
          46.53170525134736
        ],
        [
          2.393732070922852,
          46.530760483351195
        ],
        [
          2.3909854888916016,
          46.5309376286023
        ],
        [
          2.391414642333985,
          46.531232869403546
        ],
        [
          2.3913288116455083,
          46.53253190986272
        ],
        [
          2.39278793334961,
          46.53329951007484
        ],
        [
          2.3945903778076176,
          46.53312237252731
        ]
      ]
    end

    let(:geo_json) {
      GeojsonService.to_json_polygon_for_rpg(coordinates)
    }

    subject { described_class.search_rpg(geo_json) }

    it { expect(subject[:features].size).to eq 3 }
  end
end