parallel588_nominatim 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Client do
4
+ after do
5
+ WebMock.reset!
6
+ end
7
+
8
+ describe '#get' do
9
+ before do
10
+ stub_get('/search').to_return(body: "[]")
11
+ end
12
+
13
+ it 'requests the correct resource' do
14
+ Nominatim::Client.new.get('/search')
15
+ a_get('/search').should have_been_requested
16
+ end
17
+
18
+ it 'parses the body' do
19
+ response = Nominatim::Client.new.get('/search')
20
+ response.body.should eq []
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,172 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Place do
4
+ describe '#display_name' do
5
+ it 'returns a full name when set with display_name' do
6
+ place = Nominatim::Place.new(display_name: 'Los Angeles, California, United States of America')
7
+ place.display_name.should eq 'Los Angeles, California, United States of America'
8
+ end
9
+
10
+ it 'returns nil when not set' do
11
+ place = Nominatim::Place.new
12
+ place.display_name.should be_nil
13
+ end
14
+ end
15
+
16
+ describe '#class' do
17
+ it 'returns a class when set with class' do
18
+ place = Nominatim::Place.new(class: 'place')
19
+ place.class.should eq 'place'
20
+ end
21
+
22
+ it 'returns nil when not set' do
23
+ place = Nominatim::Place.new
24
+ place.class.should be_nil
25
+ end
26
+ end
27
+
28
+ describe '#type' do
29
+ it 'returns a type when set with type' do
30
+ place = Nominatim::Place.new(type: 'county')
31
+ place.type.should eq 'county'
32
+ end
33
+
34
+ it 'returns nil when not set' do
35
+ place = Nominatim::Place.new
36
+ place.type.should be_nil
37
+ end
38
+ end
39
+
40
+ describe '#address' do
41
+ it 'returns a Nominatim::Address when set' do
42
+ place = Nominatim::Place.new(address: {county: 'Los Angeles', state: 'California', country: 'United States of America'})
43
+ place.address.should be_a Nominatim::Address
44
+ end
45
+
46
+ it 'returns nil when not set' do
47
+ place = Nominatim::Place.new
48
+ place.address.should be_nil
49
+ end
50
+ end
51
+
52
+ describe '#lat' do
53
+ it 'returns a latitude when set with lat' do
54
+ place = Nominatim::Place.new(lat: '52.5487969264788', lon: '-1.81642935385411')
55
+ place.lat.should eq 52.5487969264788
56
+ end
57
+
58
+ it 'returns nil when not set' do
59
+ place = Nominatim::Place.new
60
+ place.lat.should be_nil
61
+ end
62
+ end
63
+
64
+ describe '#latitude' do
65
+ it 'returns a latitude when set with lat' do
66
+ place = Nominatim::Place.new(lat: '52.5487969264788', lon: '-1.81642935385411')
67
+ place.latitude.should eq 52.5487969264788
68
+ end
69
+
70
+ it 'returns nil when not set' do
71
+ place = Nominatim::Place.new
72
+ place.latitude.should be_nil
73
+ end
74
+ end
75
+
76
+ describe '#lon' do
77
+ it 'returns a longitude when set with lon' do
78
+ place = Nominatim::Place.new(lat: '52.5487969264788', lon: '-1.81642935385411')
79
+ place.lon.should eq -1.81642935385411
80
+ end
81
+
82
+ it 'returns nil when not set' do
83
+ place = Nominatim::Place.new
84
+ place.lon.should be_nil
85
+ end
86
+ end
87
+
88
+ describe '#longitude' do
89
+ it 'returns a longitude when set with lon' do
90
+ place = Nominatim::Place.new(lat: '52.5487969264788', lon: '-1.81642935385411')
91
+ place.longitude.should eq -1.81642935385411
92
+ end
93
+
94
+ it 'returns nil when not set' do
95
+ place = Nominatim::Place.new
96
+ place.longitude.should be_nil
97
+ end
98
+ end
99
+
100
+ describe '#boundingbox' do
101
+ it 'returns a boundingbox when set with boundingbox' do
102
+ place = Nominatim::Place.new(boundingbox: ["52.5487442016602", "52.5488510131836", "-1.81651306152344", "-1.81634628772736"])
103
+ place.boundingbox.should eq ["52.5487442016602", "52.5488510131836", "-1.81651306152344", "-1.81634628772736"]
104
+ end
105
+
106
+ it 'returns nil when not set' do
107
+ place = Nominatim::Place.new
108
+ place.boundingbox.should be_nil
109
+ end
110
+ end
111
+
112
+ describe '#bounding_box' do
113
+ it 'returns a bounding box when set with boundingbox' do
114
+ place = Nominatim::Place.new(boundingbox: ["52.5487442016602", "52.5488510131836", "-1.81651306152344", "-1.81634628772736"])
115
+ place.bounding_box.should eq ["52.5487442016602", "52.5488510131836", "-1.81651306152344", "-1.81634628772736"]
116
+ end
117
+
118
+ it 'returns nil when not set' do
119
+ place = Nominatim::Place.new
120
+ place.bounding_box.should be_nil
121
+ end
122
+ end
123
+
124
+ describe '#polygonpoints' do
125
+ it 'returns polygon points when set with polygonpoints' do
126
+ place = Nominatim::Place.new(polygonpoints: [["-1.816513", "52.5487566"], ["-1.8164913", "52.548824"], ["-1.8164685", "52.5488213"]])
127
+ place.polygonpoints.should be_a Nominatim::Polygon
128
+ end
129
+
130
+ it 'returns nil when not set' do
131
+ place = Nominatim::Place.new
132
+ place.polygonpoints.should be_nil
133
+ end
134
+ end
135
+
136
+ describe '#place_id' do
137
+ it 'returns a place id when set with place_id' do
138
+ place = Nominatim::Place.new(place_id: '84327444')
139
+ place.place_id.should eq 84327444
140
+ end
141
+
142
+ it 'returns nil when not set' do
143
+ place = Nominatim::Place.new
144
+ place.place_id.should be_nil
145
+ end
146
+ end
147
+
148
+ describe '#osm_id' do
149
+ it 'returns an osm id when set with osm_id' do
150
+ place = Nominatim::Place.new(osm_id: '90394480')
151
+ place.osm_id.should eq 90394480
152
+ end
153
+
154
+ it 'returns nil when not set' do
155
+ place = Nominatim::Place.new
156
+ place.osm_id.should be_nil
157
+ end
158
+ end
159
+
160
+ describe '#osm_type' do
161
+ it 'returns an osm type when set with osm_type' do
162
+ place = Nominatim::Place.new(osm_type: 'way')
163
+ place.osm_type.should eq 'way'
164
+ end
165
+
166
+ it 'returns nil when not set' do
167
+ place = Nominatim::Place.new
168
+ place.osm_type.should be_nil
169
+ end
170
+ end
171
+
172
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Point do
4
+ let(:point) { Nominatim::Point.new(52.5487969264788, -1.81642935385411) }
5
+
6
+ describe '#lat' do
7
+ it 'returns the latitude' do
8
+ point.lat.should eq 52.5487969264788
9
+ end
10
+ end
11
+
12
+ describe '#latitude' do
13
+ it 'returns the latitude' do
14
+ point.latitude.should eq 52.5487969264788
15
+ end
16
+ end
17
+
18
+ describe '#lon' do
19
+ it 'returns the longitude' do
20
+ point.lon.should eq -1.81642935385411
21
+ end
22
+ end
23
+
24
+ describe '#longitude' do
25
+ it 'returns the longitude' do
26
+ point.longitude.should eq -1.81642935385411
27
+ end
28
+ end
29
+
30
+ describe '#to_a' do
31
+ it 'returns an array representing the point' do
32
+ point.to_a.should eq [52.5487969264788, -1.81642935385411]
33
+ end
34
+ end
35
+
36
+ describe '#to_s' do
37
+ it 'returns a string representing the point' do
38
+ point.to_s.should eq '[52.5487969264788, -1.81642935385411]'
39
+ end
40
+ end
41
+
42
+ describe '#==' do
43
+ it 'returns true when objects coordinates are the same' do
44
+ other = Nominatim::Point.new(52.5487969264788, -1.81642935385411)
45
+ (point == other).should be_true
46
+ end
47
+
48
+ it 'returns false when objects coordinates are different' do
49
+ other = Nominatim::Point.new(-1.81642935385411, 52.5487969264788)
50
+ (point == other).should be_false
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Polygon do
4
+
5
+ let(:polygon) { Nominatim::Polygon.new([[-1.816513, 52.5487566], [-1.8164913, 52.548824], [-1.8164685, 52.5488213]]) }
6
+
7
+ it 'sets coordinates correctly' do
8
+ polygon.coordinates.first.lat.should eq -1.816513
9
+ polygon.coordinates.first.lon.should eq 52.5487566
10
+ end
11
+
12
+ describe '#coordinates' do
13
+ it 'retruns an array of coordinates' do
14
+ polygon.coordinates.each do |p|
15
+ p.should be_a Nominatim::Point
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Reverse do
4
+
5
+ let(:reverse) { Nominatim::Reverse.new }
6
+
7
+ it 'has no criteria set' do
8
+ reverse.criteria.should be_empty
9
+ end
10
+
11
+ it 'allows chaining of criterions' do
12
+ reverse.lat('37.733976').lon('-122.3912081').address_details(1)
13
+ reverse.criteria[:lat].should eq '37.733976'
14
+ reverse.criteria[:lon].should eq '-122.3912081'
15
+ reverse.criteria[:addressdetails].should eq 1
16
+ end
17
+
18
+ describe '#each' do
19
+ let(:reverse) { Nominatim::Reverse.new.lat('37.733976').lon('-122.3912081').address_details(1) }
20
+
21
+ before do
22
+ stub_get('/reverse').
23
+ with(query: { lat: '37.733976', lon: '-122.3912081', addressdetails: 1 }).
24
+ to_return(body: fixture('reverse.json'))
25
+ end
26
+
27
+ it 'iterates over the matching places' do
28
+ reverse.fetch.should be_a Nominatim::Place
29
+ end
30
+
31
+ it 'returns correct places' do
32
+ reverse.fetch.display_name.should eq '4900, 3rd Street, San Francisco, California, 94124, United States of America'
33
+ reverse.fetch.address.city.should eq 'San Francisco'
34
+ reverse.fetch.address.state.should eq 'California'
35
+ end
36
+ end
37
+
38
+ describe '#lat' do
39
+ it 'adds a latitude criterion' do
40
+ reverse.lat('37.733976')
41
+ reverse.criteria[:lat].should eq '37.733976'
42
+ end
43
+ end
44
+
45
+ describe '#lon' do
46
+ it 'adds a longitude criterion' do
47
+ reverse.lon('-122.3912081')
48
+ reverse.criteria[:lon].should eq '-122.3912081'
49
+ end
50
+ end
51
+
52
+ describe '#address_details' do
53
+ it 'adds an address details criterion' do
54
+ reverse.address_details(true)
55
+ reverse.criteria[:addressdetails].should eq 1
56
+ end
57
+
58
+ it 'sets 1 when set with true' do
59
+ reverse.address_details(true)
60
+ reverse.criteria[:addressdetails].should eq 1
61
+ end
62
+
63
+ it 'sets 0 when set with false' do
64
+ reverse.address_details(false)
65
+ reverse.criteria[:addressdetails].should eq 0
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,140 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nominatim::Search do
4
+
5
+ let(:search) { Nominatim::Search.new }
6
+
7
+ it 'has no criteria set' do
8
+ search.criteria.should be_empty
9
+ end
10
+
11
+ it 'allows chaining of criterions' do
12
+ search.query('Los Angeles').limit(1)
13
+ search.criteria[:q].should eq 'Los Angeles'
14
+ search.criteria[:limit].should eq 1
15
+ end
16
+
17
+ describe '#each' do
18
+
19
+ let(:search) { Nominatim::Search.new.query('Los Angeles').limit(1) }
20
+
21
+ before do
22
+ stub_get('/search').
23
+ with(query: { q: 'Los Angeles', limit: 1 }).
24
+ to_return(body: fixture('search.json'))
25
+ end
26
+
27
+ it 'iterates over the matching places' do
28
+ search.each do |place|
29
+ place.should be_a Nominatim::Place
30
+ end
31
+ end
32
+
33
+ it 'returns all matching places' do
34
+ search.count.should eq 1
35
+ end
36
+
37
+ it 'returns correct places' do
38
+ search.first.display_name.should eq 'Los Angeles, California, United States of America'
39
+ search.first.lat.should eq 34.0966764
40
+ search.first.lon.should eq -117.7196785
41
+ end
42
+ end
43
+
44
+ describe '#query' do
45
+ it 'adds a query criterion' do
46
+ search.query('Los Angeles')
47
+ search.criteria[:q].should eq 'Los Angeles'
48
+ end
49
+ end
50
+
51
+ describe '#country_codes' do
52
+ it 'adds a country codes criterion' do
53
+ search.country_codes('us')
54
+ search.criteria[:countrycodes].should eq 'us'
55
+ end
56
+
57
+ it 'adds all country codes when set with an array' do
58
+ search.country_codes(['us', 'ca'])
59
+ search.criteria[:countrycodes].should eq 'us,ca'
60
+ end
61
+ end
62
+
63
+ describe '#viewbox' do
64
+ it 'adds a viewbox criterion' do
65
+ search.viewbox(["52.5487442016602", "-1.81651306152344", "52.5488510131836", "-1.81634628772736"])
66
+ search.criteria[:viewbox].should eq "52.5487442016602,-1.81651306152344,52.5488510131836,-1.81634628772736"
67
+ end
68
+ end
69
+
70
+ describe '#bounded' do
71
+ it 'adds a bounded criterion' do
72
+ search.bounded(true)
73
+ search.criteria[:bounded].should eq 1
74
+ end
75
+
76
+ it 'sets 1 when set with true' do
77
+ search.bounded(true)
78
+ search.criteria[:bounded].should eq 1
79
+ end
80
+
81
+ it 'sets 0 when set with false' do
82
+ search.bounded(false)
83
+ search.criteria[:bounded].should eq 0
84
+ end
85
+ end
86
+
87
+ describe '#polygon' do
88
+ it 'adds a polygon criterion' do
89
+ search.polygon(true)
90
+ search.criteria[:polygon].should eq 1
91
+ end
92
+
93
+ it 'sets 1 when set with true' do
94
+ search.polygon(true)
95
+ search.criteria[:polygon].should eq 1
96
+ end
97
+
98
+ it 'sets 0 when set with false' do
99
+ search.polygon(false)
100
+ search.criteria[:polygon].should eq 0
101
+ end
102
+ end
103
+
104
+ describe '#address_details' do
105
+ it 'adds an address details criterion' do
106
+ search.address_details(true)
107
+ search.criteria[:addressdetails].should eq 1
108
+ end
109
+
110
+ it 'sets 1 when set with true' do
111
+ search.address_details(true)
112
+ search.criteria[:addressdetails].should eq 1
113
+ end
114
+
115
+ it 'sets 0 when set with false' do
116
+ search.address_details(false)
117
+ search.criteria[:addressdetails].should eq 0
118
+ end
119
+ end
120
+
121
+ describe '#exclude_place_ids' do
122
+ it 'excludes given place ids' do
123
+ search.exclude_place_ids('1')
124
+ search.criteria[:exclude_place_ids].should eq '1'
125
+ end
126
+
127
+ it 'adds all place ids when set with an array' do
128
+ search.exclude_place_ids(['1', '2', '3'])
129
+ search.criteria[:exclude_place_ids].should eq '1,2,3'
130
+ end
131
+ end
132
+
133
+ describe '#limit' do
134
+ it 'adds a limit criterion' do
135
+ search.limit(1)
136
+ search.criteria[:limit].should eq 1
137
+ end
138
+ end
139
+
140
+ end