-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathgoogle_test.rb
145 lines (122 loc) · 4.63 KB
/
google_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# encoding: utf-8
require 'test_helper'
class GoogleTest < GeocoderTestCase
def setup
super
Geocoder.configure(lookup: :google)
end
def test_google_result_components
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Manhattan",
result.address_components_of_type(:sublocality).first['long_name']
end
def test_google_result_components_contains_route
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Penn Plaza",
result.address_components_of_type(:route).first['long_name']
end
def test_google_result_components_contains_street_number
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "4",
result.address_components_of_type(:street_number).first['long_name']
end
def test_google_returns_city_when_no_locality_in_result
result = Geocoder.search("no locality").first
assert_equal "Haram", result.city
end
def test_google_city_results_returns_nil_if_no_matching_component_types
result = Geocoder.search("no city data").first
assert_equal nil, result.city
end
def test_google_street_address_returns_formatted_street_address
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "4 Penn Plaza", result.street_address
end
def test_google_precision
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "ROOFTOP",
result.precision
end
def test_google_viewport
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal [40.7473324, -73.9965316, 40.7536276, -73.9902364],
result.viewport
end
def test_google_bounds
result = Geocoder.search("new york").first
assert_equal [40.4773991, -74.2590899, 40.9175771, -73.7002721],
result.bounds
end
def test_google_no_bounds
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal nil, result.bounds
end
def test_google_query_url_contains_bounds
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:bounds => [[40.0, -120.0], [39.0, -121.0]]
))
assert_match(/bounds=40.0+%2C-120.0+%7C39.0+%2C-121.0+/, url)
end
def test_google_query_url_contains_region
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:region => "gb"
))
assert_match(/region=gb/, url)
end
def test_google_query_url_contains_components_when_given_as_string
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:components => "locality:ES"
))
formatted = "components=" + CGI.escape("locality:ES")
assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
end
def test_google_query_url_contains_components_when_given_as_array
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:components => ["country:ES", "locality:ES"]
))
formatted = "components=" + CGI.escape("country:ES|locality:ES")
assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
end
def test_google_query_url_contains_result_type_when_given_as_string
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:result_type => "country"
))
formatted = "result_type=" + CGI.escape("country")
assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
end
def test_google_query_url_contains_result_type_when_given_as_array
lookup = Geocoder::Lookup::Google.new
url = lookup.query_url(Geocoder::Query.new(
"Some Intersection",
:result_type => ["country", "postal_code"]
))
formatted = "result_type=" + CGI.escape("country|postal_code")
assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
end
def test_google_uses_https_when_api_key_is_set
Geocoder.configure(api_key: "deadbeef")
query = Geocoder::Query.new("Madison Square Garden, New York, NY")
assert_match(/^https:/, query.url)
end
def test_actual_make_api_request_with_https
Geocoder.configure(use_https: true, lookup: :google)
require 'webmock/test_unit'
WebMock.enable!
stub_all = WebMock.stub_request(:any, /.*/).to_return(status: 200)
g = Geocoder::Lookup::Google.new
g.send(:actual_make_api_request, Geocoder::Query.new('test location'))
assert_requested(stub_all)
WebMock.reset!
WebMock.disable!
end
end