require 'spec_helper'

describe ApiAdresse::PointAdapter do
  let(:address) { '50 av des champs elysees' }

  describe '.geocode', vcr: { cassette_name: 'api_adresse_octo' } do
    it 'return a point' do
      expect(described_class.new(address).geocode.class).to eq(RGeo::Cartesian::PointImpl)
    end

    context 'when RestClient::Exception' do
      before do
        allow(ApiAdresse::API).to receive(:call).and_raise(RestClient::Exception)
      end

      it 'return nil' do
        expect(described_class.new(address).geocode).to be_nil
      end
    end

    context 'when JSON::ParserError' do
      before do
        allow(JSON).to receive(:parse).and_raise(JSON::ParserError)
      end

      it 'return nil' do
        expect(described_class.new(address).geocode).to be_nil
      end
    end
  end
end