Skip to content
Snippets Groups Projects
mapbox_test.rb 1.65 KiB
Newer Older
Andy Mention's avatar
Andy Mention committed
# encoding: utf-8
require 'test_helper'

class MapboxTest < GeocoderTestCase

  def setup
    Geocoder.configure(lookup: :mapbox)
    set_api_key!(:mapbox)
  end

  def test_url_contains_api_key
    Geocoder.configure(mapbox: {api_key: "abc123"})
    query = Geocoder::Query.new("Leadville, CO")
    assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123", query.url
  end

  def test_url_contains_params
    Geocoder.configure(mapbox: {api_key: "abc123"})
    query = Geocoder::Query.new("Leadville, CO", {params: {country: 'CN'}})
    assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123&country=CN", query.url
  end

Andy Mention's avatar
Andy Mention committed
  def test_result_components
    result = Geocoder.search("Madison Square Garden, New York, NY").first
    assert_equal [40.749688, -73.991566], result.coordinates
    assert_equal "Madison Square Garden", result.place_name
    assert_equal "4 Penn Plz", result.street
    assert_equal "New York", result.city
    assert_equal "New York", result.state
    assert_equal "10001", result.postal_code
    assert_equal "United States", result.country
    assert_equal "Garment District", result.neighborhood
Andy Mention's avatar
Andy Mention committed
    assert_equal "10001", result.postal_code
    assert_equal "Madison Square Garden, 4 Penn Plz, New York, New York, 10001, United States", result.address
  end

  def test_no_results
    assert_equal [], Geocoder.search("no results")
  end

  def test_raises_exception_with_invalid_api_key
    Geocoder.configure(always_raise: [Geocoder::InvalidApiKey])
    assert_raises Geocoder::InvalidApiKey do
      Geocoder.search("invalid api key")
Andy Mention's avatar
Andy Mention committed
    end
  end
end