barometer 0.7.3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +7 -0
  3. data/LICENSE +1 -1
  4. data/{README.rdoc → README.md} +124 -110
  5. data/Rakefile +1 -21
  6. data/TODO +8 -9
  7. data/barometer.gemspec +20 -19
  8. data/bin/barometer +36 -83
  9. data/lib/barometer.rb +13 -11
  10. data/lib/barometer/base.rb +10 -10
  11. data/lib/barometer/data.rb +1 -1
  12. data/lib/barometer/data/distance.rb +25 -25
  13. data/lib/barometer/data/geo.rb +9 -9
  14. data/lib/barometer/data/local_datetime.rb +24 -20
  15. data/lib/barometer/data/local_time.rb +13 -13
  16. data/lib/barometer/data/location.rb +6 -6
  17. data/lib/barometer/data/pressure.rb +24 -24
  18. data/lib/barometer/data/speed.rb +28 -28
  19. data/lib/barometer/data/sun.rb +7 -7
  20. data/lib/barometer/data/temperature.rb +29 -29
  21. data/lib/barometer/data/units.rb +9 -9
  22. data/lib/barometer/data/zone.rb +19 -19
  23. data/lib/barometer/formats.rb +1 -1
  24. data/lib/barometer/formats/coordinates.rb +7 -7
  25. data/lib/barometer/formats/format.rb +6 -6
  26. data/lib/barometer/formats/geocode.rb +5 -5
  27. data/lib/barometer/formats/icao.rb +6 -6
  28. data/lib/barometer/formats/postalcode.rb +3 -3
  29. data/lib/barometer/formats/short_zipcode.rb +2 -2
  30. data/lib/barometer/formats/weather_id.rb +10 -10
  31. data/lib/barometer/formats/woe_id.rb +20 -20
  32. data/lib/barometer/formats/zipcode.rb +3 -3
  33. data/lib/barometer/key_file_parser.rb +20 -0
  34. data/lib/barometer/measurements/measurement.rb +32 -32
  35. data/lib/barometer/measurements/result.rb +39 -39
  36. data/lib/barometer/measurements/result_array.rb +12 -12
  37. data/lib/barometer/query.rb +15 -15
  38. data/lib/barometer/services.rb +3 -3
  39. data/lib/barometer/translations/icao_country_codes.yml +20 -20
  40. data/lib/barometer/translations/weather_country_codes.yml +1 -1
  41. data/lib/barometer/translations/zone_codes.yml +2 -2
  42. data/lib/barometer/version.rb +3 -0
  43. data/lib/barometer/weather.rb +27 -27
  44. data/lib/barometer/weather_services/noaa.rb +314 -3
  45. data/lib/barometer/weather_services/service.rb +32 -30
  46. data/lib/barometer/weather_services/weather_bug.rb +35 -33
  47. data/lib/barometer/weather_services/wunderground.rb +31 -29
  48. data/lib/barometer/weather_services/yahoo.rb +36 -35
  49. data/lib/barometer/web_services/geocode.rb +5 -7
  50. data/lib/barometer/web_services/noaa_station_id.rb +53 -0
  51. data/lib/barometer/web_services/placemaker.rb +11 -13
  52. data/lib/barometer/web_services/timezone.rb +5 -7
  53. data/lib/barometer/web_services/weather_id.rb +4 -6
  54. data/lib/barometer/web_services/web_service.rb +4 -4
  55. data/spec/barometer_spec.rb +25 -27
  56. data/spec/cassettes/Barometer.json +1 -0
  57. data/spec/cassettes/Query.json +1 -0
  58. data/spec/cassettes/Query_Format_Coordinates.json +1 -0
  59. data/spec/cassettes/Query_Format_Geocode.json +1 -0
  60. data/spec/cassettes/Query_Format_WeatherID.json +1 -0
  61. data/spec/cassettes/Query_Format_WoeID.json +1 -0
  62. data/spec/cassettes/WeatherService.json +1 -0
  63. data/spec/cassettes/WeatherService_Noaa.json +1 -0
  64. data/spec/cassettes/WeatherService_WeatherBug.json +1 -0
  65. data/spec/cassettes/WeatherService_Wunderground.json +1 -0
  66. data/spec/cassettes/WeatherService_Yahoo.json +1 -0
  67. data/spec/cassettes/WebService_Geocode.json +1 -0
  68. data/spec/cassettes/WebService_NoaaStation.json +1 -0
  69. data/spec/data/distance_spec.rb +60 -60
  70. data/spec/data/geo_spec.rb +23 -23
  71. data/spec/data/local_datetime_spec.rb +44 -44
  72. data/spec/data/local_time_spec.rb +47 -47
  73. data/spec/data/location_spec.rb +16 -16
  74. data/spec/data/pressure_spec.rb +61 -61
  75. data/spec/data/speed_spec.rb +69 -69
  76. data/spec/data/sun_spec.rb +25 -25
  77. data/spec/data/temperature_spec.rb +68 -68
  78. data/spec/data/units_spec.rb +21 -21
  79. data/spec/data/zone_spec.rb +35 -35
  80. data/spec/formats/coordinates_spec.rb +27 -27
  81. data/spec/formats/format_spec.rb +17 -25
  82. data/spec/formats/geocode_spec.rb +23 -31
  83. data/spec/formats/icao_spec.rb +26 -32
  84. data/spec/formats/postalcode_spec.rb +22 -28
  85. data/spec/formats/short_zipcode_spec.rb +20 -26
  86. data/spec/formats/weather_id_spec.rb +57 -67
  87. data/spec/formats/woe_id_spec.rb +59 -59
  88. data/spec/formats/zipcode_spec.rb +39 -47
  89. data/spec/key_file_parser_spec.rb +28 -0
  90. data/spec/measurements/measurement_spec.rb +79 -133
  91. data/spec/measurements/result_array_spec.rb +23 -38
  92. data/spec/measurements/result_spec.rb +100 -128
  93. data/spec/query_spec.rb +83 -100
  94. data/spec/spec_helper.rb +24 -6
  95. data/spec/weather_services/noaa_spec.rb +179 -0
  96. data/spec/weather_services/services_spec.rb +28 -36
  97. data/spec/weather_services/weather_bug_spec.rb +57 -77
  98. data/spec/weather_services/wunderground_spec.rb +36 -65
  99. data/spec/weather_services/yahoo_spec.rb +38 -60
  100. data/spec/weather_spec.rb +79 -79
  101. data/spec/web_services/geocode_spec.rb +7 -11
  102. data/spec/web_services/noaa_station_id_spec.rb +33 -0
  103. data/spec/web_services/placemaker_spec.rb +7 -12
  104. data/spec/web_services/web_services_spec.rb +3 -9
  105. metadata +214 -163
  106. data/VERSION.yml +0 -5
  107. data/lib/barometer/weather_services/google.rb +0 -142
  108. data/lib/barometer/weather_services/weather_dot_com.rb +0 -279
  109. data/spec/fakeweb_helper.rb +0 -179
  110. data/spec/fixtures/formats/weather_id/90210.xml +0 -7
  111. data/spec/fixtures/formats/weather_id/from_USGA0028.xml +0 -3
  112. data/spec/fixtures/formats/weather_id/ksfo.xml +0 -1
  113. data/spec/fixtures/formats/weather_id/manhattan.xml +0 -7
  114. data/spec/fixtures/formats/weather_id/new_york.xml +0 -1
  115. data/spec/fixtures/formats/weather_id/the_hills.xml +0 -1
  116. data/spec/fixtures/geocode/40_73_v3.json +0 -497
  117. data/spec/fixtures/geocode/90210_v3.json +0 -63
  118. data/spec/fixtures/geocode/T5B4M9_v3.json +0 -68
  119. data/spec/fixtures/geocode/atlanta_v3.json +0 -58
  120. data/spec/fixtures/geocode/calgary_ab_v3.json +0 -58
  121. data/spec/fixtures/geocode/ksfo_v3.json +0 -73
  122. data/spec/fixtures/geocode/newyork_ny_v3.json +0 -58
  123. data/spec/fixtures/services/google/calgary_ab.xml +0 -1
  124. data/spec/fixtures/services/placemaker/T5B4M9.xml +0 -65
  125. data/spec/fixtures/services/placemaker/atlanta.xml +0 -65
  126. data/spec/fixtures/services/placemaker/coords.xml +0 -65
  127. data/spec/fixtures/services/placemaker/ksfo.xml +0 -65
  128. data/spec/fixtures/services/placemaker/new_york.xml +0 -65
  129. data/spec/fixtures/services/placemaker/the_hills.xml +0 -65
  130. data/spec/fixtures/services/placemaker/w615702.xml +0 -47
  131. data/spec/fixtures/services/weather_bug/90210_current.xml +0 -93
  132. data/spec/fixtures/services/weather_bug/90210_forecast.xml +0 -76
  133. data/spec/fixtures/services/weather_dot_com/90210.xml +0 -1
  134. data/spec/fixtures/services/wunderground/current_calgary_ab.xml +0 -9
  135. data/spec/fixtures/services/wunderground/forecast_calgary_ab.xml +0 -13
  136. data/spec/fixtures/services/yahoo/90210.xml +0 -3
  137. data/spec/weather_services/google_spec.rb +0 -181
  138. data/spec/weather_services/weather_dot_com_spec.rb +0 -224
data/spec/query_spec.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "Query" do
4
-
3
+ describe Barometer::Query, :vcr => {
4
+ :cassette_name => "Query"
5
+ } do
5
6
  before(:each) do
6
7
  @short_zipcode = "90210"
7
8
  @zipcode = @short_zipcode
@@ -11,13 +12,13 @@ describe "Query" do
11
12
  @coordinates = "40.756054,-73.986951"
12
13
  @geocode = "New York, NY"
13
14
  @icao = "KSFO"
14
-
15
+
15
16
  # actual conversions
16
17
  @zipcode_to_coordinates = "34.1030032,-118.4104684"
17
18
  @zipcode_to_geocode = "Beverly Hills, CA, United States"
18
19
  @zipcode_to_weather_id = "USCA0090"
19
- @postalcode_to_coordinates = "53.570516,-113.45784"
20
- @geocode_to_coordinates = "40.7143528,-74.00597309999999"
20
+ @postalcode_to_coordinates = "53.5721719,-113.4551835"
21
+ @geocode_to_coordinates = "40.7143528,-74.0059731"
21
22
  @geocode_to_weather_id = "USNY0996"
22
23
  @coordinates_to_geocode = "Manhattan, NY, United States"
23
24
  @coordinates_to_weather_id = "USNY0996"
@@ -25,9 +26,8 @@ describe "Query" do
25
26
  @icao_to_geocode = "San Francisco, CA, United States"
26
27
  @icao_to_weather_id = "USCA0987"
27
28
  end
28
-
29
+
29
30
  describe "determines the query format" do
30
-
31
31
  before(:each) do
32
32
  @query = Barometer::Query.new
33
33
  @query.country_code.should be_nil
@@ -48,7 +48,7 @@ describe "Query" do
48
48
  @query.format.to_sym.should == :zipcode
49
49
  @query.country_code.should == "US"
50
50
  end
51
-
51
+
52
52
  it "recognizes a postal code" do
53
53
  @query.q = @postal_code
54
54
  @query.format.should be_nil
@@ -56,7 +56,7 @@ describe "Query" do
56
56
  @query.format.to_sym.should == :postalcode
57
57
  @query.country_code.should == "CA"
58
58
  end
59
-
59
+
60
60
  it "recognizes icao" do
61
61
  @query.q = @icao
62
62
  @query.format.should be_nil
@@ -64,7 +64,7 @@ describe "Query" do
64
64
  @query.format.to_sym.should == :icao
65
65
  @query.country_code.should == "US"
66
66
  end
67
-
67
+
68
68
  it "recognizes weather_id" do
69
69
  @query.q = @weather_id
70
70
  @query.format.should be_nil
@@ -72,7 +72,7 @@ describe "Query" do
72
72
  @query.format.to_sym.should == :weather_id
73
73
  @query.country_code.should == "US"
74
74
  end
75
-
75
+
76
76
  it "recognizes latitude/longitude" do
77
77
  @query.q = @coordinates
78
78
  @query.format.should be_nil
@@ -80,7 +80,7 @@ describe "Query" do
80
80
  @query.format.to_sym.should == :coordinates
81
81
  @query.country_code.should be_nil
82
82
  end
83
-
83
+
84
84
  it "defaults to a general geo_location" do
85
85
  @query.q = @geocode
86
86
  @query.format.should be_nil
@@ -88,62 +88,60 @@ describe "Query" do
88
88
  @query.format.to_sym.should == :geocode
89
89
  @query.country_code.should be_nil
90
90
  end
91
-
92
91
  end
93
-
92
+
94
93
  describe "when initialized" do
95
-
96
94
  before(:each) do
97
95
  @query = Barometer::Query.new
98
96
  end
99
-
97
+
100
98
  it "responds to q" do
101
99
  @query.q.should be_nil
102
100
  end
103
-
101
+
104
102
  it "attempts query conversion when reading q (if format known)" do
105
103
  query = Barometer::Query.new(@geocode)
106
104
  query.format.should == :geocode
107
105
  Barometer::Query::Format::Geocode.should_receive(:convert_query).once.with(@geocode).and_return(@geocode)
108
106
  query.q.should == @geocode
109
107
  end
110
-
108
+
111
109
  it "does not attempt query conversion when reading q (if format unknown)" do
112
110
  @query.format.should be_nil
113
111
  Barometer::Query::Format.should_not_receive(:convert_query)
114
112
  @query.q.should be_nil
115
113
  end
116
-
114
+
117
115
  it "responds to format" do
118
116
  @query.format.should be_nil
119
117
  end
120
-
118
+
121
119
  it "responds to country_code" do
122
120
  @query.country_code.should be_nil
123
121
  end
124
-
122
+
125
123
  it "sets the query" do
126
124
  query = Barometer::Query.new(@geocode)
127
125
  query.q.should == @geocode
128
126
  end
129
-
127
+
130
128
  it "determines the format" do
131
129
  query = Barometer::Query.new(@geocode)
132
130
  query.format.should_not be_nil
133
131
  end
134
-
132
+
135
133
  it "responds to geo" do
136
134
  @query.geo.should be_nil
137
135
  end
138
-
136
+
139
137
  it "responds to timezone" do
140
138
  @query.timezone.should be_nil
141
139
  end
142
-
140
+
143
141
  it "responds to conversions" do
144
142
  @query.conversions.should be_nil
145
143
  end
146
-
144
+
147
145
  it "returns latitude for when recognized as coordinates" do
148
146
  @query.q = @coordinates
149
147
  @query.format.should be_nil
@@ -151,7 +149,7 @@ describe "Query" do
151
149
  @query.format.to_sym.should == :coordinates
152
150
  @query.latitude.should == @coordinates.split(',')[0]
153
151
  end
154
-
152
+
155
153
  it "returns longitude for when recognized as coordinates" do
156
154
  @query.q = @coordinates
157
155
  @query.format.should be_nil
@@ -159,7 +157,7 @@ describe "Query" do
159
157
  @query.format.to_sym.should == :coordinates
160
158
  @query.longitude.should == @coordinates.split(',')[1]
161
159
  end
162
-
160
+
163
161
  it "returns nothing for latitude/longitude when not coordinates" do
164
162
  @query.q = @geocode
165
163
  @query.format.should be_nil
@@ -168,348 +166,333 @@ describe "Query" do
168
166
  @query.latitude.should be_nil
169
167
  @query.longitude.should be_nil
170
168
  end
171
-
172
169
  end
173
-
170
+
174
171
  describe "when returning the query to a Weather API" do
175
-
176
172
  it "raises an error if there are NO acceptable formats" do
177
173
  acceptable_formats = nil
178
174
  query = Barometer::Query.new
179
175
  lambda { query.convert!(acceptable_formats) }.should raise_error
180
-
176
+
181
177
  acceptable_formats = []
182
178
  lambda { query.convert!(acceptable_formats) }.should raise_error
183
179
  end
184
-
180
+
185
181
  describe "and the query is already the preferred format" do
186
-
187
182
  it "returns the short_zipcode untouched" do
188
183
  preferred = [:short_zipcode]
189
184
  query = Barometer::Query.new(@short_zipcode)
190
185
  query.convert!(preferred).q.should == @short_zipcode
191
186
  query.country_code.should == "US"
192
187
  end
193
-
188
+
194
189
  it "returns the long_zipcode untouched" do
195
190
  preferred = [:zipcode]
196
191
  query = Barometer::Query.new(@long_zipcode)
197
192
  query.convert!(preferred).q.should == @long_zipcode
198
193
  query.country_code.should == "US"
199
194
  end
200
-
195
+
201
196
  it "returns the postalcode untouched" do
202
197
  preferred = [:postalcode]
203
198
  query = Barometer::Query.new(@postal_code)
204
199
  query.convert!(preferred).q.should == @postal_code
205
200
  query.country_code.should == "CA"
206
201
  end
207
-
202
+
208
203
  it "returns the icao untouched" do
209
204
  preferred = [:icao]
210
205
  query = Barometer::Query.new(@icao)
211
206
  query.convert!(preferred).q.should == @icao
212
207
  end
213
-
208
+
214
209
  it "returns the coordinates untouched" do
215
210
  preferred = [:coordinates]
216
211
  query = Barometer::Query.new(@coordinates)
217
212
  query.convert!(preferred).q.should == @coordinates
218
213
  end
219
-
214
+
220
215
  it "returns the geocode untouched" do
221
216
  preferred = [:geocode]
222
217
  query = Barometer::Query.new(@geocode)
223
218
  query.convert!(preferred).q.should == @geocode
224
219
  end
225
-
226
220
  end
227
-
221
+
228
222
  describe "and the query needs converting" do
229
-
230
223
  describe "with an intial format of :short_zipcode," do
231
-
232
224
  before(:each) do
233
225
  @query = Barometer::Query.new(@short_zipcode)
234
226
  end
235
-
227
+
236
228
  it "converts to zipcode" do
237
229
  acceptable_formats = [:zipcode]
238
230
  query = @query.convert!(acceptable_formats)
239
231
  query.q.should == @zipcode
240
232
  query.country_code.should == "US"
241
233
  end
242
-
234
+
243
235
  it "converts to coordinates" do
244
236
  acceptable_formats = [:coordinates]
245
237
  query = @query.convert!(acceptable_formats)
246
238
  query.q.should == @zipcode_to_coordinates
247
239
  query.country_code.should == "US"
248
240
  end
249
-
241
+
250
242
  it "converts to geocode" do
251
243
  acceptable_formats = [:geocode]
252
244
  query = @query.convert!(acceptable_formats)
253
245
  query.q.should == @zipcode_to_geocode
254
246
  query.country_code.should == "US"
255
247
  end
256
-
248
+
257
249
  it "converts to weather_id" do
258
250
  acceptable_formats = [:weather_id]
259
251
  query = @query.convert!(acceptable_formats)
260
252
  query.q.should == @zipcode_to_weather_id
261
253
  query.country_code.should == "US"
262
254
  end
263
-
255
+
264
256
  it "skips converting to icao" do
265
257
  acceptable_formats = [:icao]
266
258
  query = @query.convert!(acceptable_formats)
267
259
  query.should be_nil
268
260
  end
269
-
261
+
270
262
  it "skips converting to postalcode" do
271
263
  acceptable_formats = [:postalcode]
272
264
  query = @query.convert!(acceptable_formats)
273
265
  query.should be_nil
274
266
  end
275
-
276
267
  end
277
-
268
+
278
269
  describe "with an intial format of :zipcode," do
279
-
280
270
  before(:each) do
281
271
  @query = Barometer::Query.new(@zipcode)
282
272
  Barometer.force_geocode = false
283
273
  end
284
-
274
+
285
275
  it "converts to coordinates" do
286
276
  acceptable_formats = [:coordinates]
287
277
  query = @query.convert!(acceptable_formats)
288
278
  query.q.should == @zipcode_to_coordinates
289
279
  query.country_code.should == "US"
290
280
  end
291
-
281
+
292
282
  it "converts to geocode" do
293
283
  acceptable_formats = [:geocode]
294
284
  query = @query.convert!(acceptable_formats)
295
285
  query.q.should == @zipcode_to_geocode
296
286
  query.country_code.should == "US"
297
287
  end
298
-
288
+
299
289
  it "skips converting to icao" do
300
290
  acceptable_formats = [:icao]
301
291
  query = @query.convert!(acceptable_formats)
302
292
  query.should be_nil
303
293
  end
304
-
294
+
305
295
  it "skips converting to postalcode" do
306
296
  acceptable_formats = [:postalcode]
307
297
  query = @query.convert!(acceptable_formats)
308
298
  query.should be_nil
309
299
  end
310
-
300
+
311
301
  it "skips converting to short_zipcode" do
312
302
  @query = Barometer::Query.new(@long_zipcode)
313
303
  acceptable_formats = [:short_zipcode]
314
304
  query = @query.convert!(acceptable_formats)
315
305
  query.should be_nil
316
306
  end
317
-
307
+
318
308
  it "converts to weather_id" do
319
309
  acceptable_formats = [:weather_id]
320
310
  query = @query.convert!(acceptable_formats)
321
311
  query.q.should == @zipcode_to_weather_id
322
312
  query.country_code.should == "US"
323
313
  end
324
-
325
314
  end
326
-
315
+
327
316
  describe "with an intial format of :postalcode," do
328
-
329
317
  before(:each) do
330
318
  @query = Barometer::Query.new(@postal_code)
331
319
  end
332
-
320
+
333
321
  it "converts to coordinates" do
334
322
  acceptable_formats = [:coordinates]
335
323
  query = @query.convert!(acceptable_formats)
336
324
  query.q.should == @postalcode_to_coordinates
337
325
  query.country_code.should == "CA"
338
326
  end
339
-
327
+
340
328
  it "skips converting to geocode" do
341
329
  acceptable_formats = [:geocode]
342
330
  query = @query.convert!(acceptable_formats)
343
331
  query.should be_nil
344
332
  end
345
-
333
+
346
334
  it "skips converting to icao" do
347
335
  acceptable_formats = [:icao]
348
336
  query = @query.convert!(acceptable_formats)
349
337
  query.should be_nil
350
338
  end
351
-
339
+
352
340
  it "skips converting to short_zipcode" do
353
341
  acceptable_formats = [:short_zipcode]
354
342
  query = @query.convert!(acceptable_formats)
355
343
  query.should be_nil
356
344
  end
357
-
345
+
358
346
  it "skips converting to weather_id" do
359
347
  acceptable_formats = [:weather_id]
360
348
  query = @query.convert!(acceptable_formats)
361
349
  query.should be_nil
362
350
  end
363
-
351
+
364
352
  it "skips converting to zipcode" do
365
353
  acceptable_formats = [:zipcode]
366
354
  query = @query.convert!(acceptable_formats)
367
355
  query.should be_nil
368
356
  end
369
-
370
357
  end
371
-
358
+
372
359
  describe "with an intial format of :icao," do
373
-
374
360
  before(:each) do
375
361
  @query = Barometer::Query.new(@icao)
376
362
  end
377
-
363
+
378
364
  it "converts to coordinates" do
379
365
  acceptable_formats = [:coordinates]
380
366
  query = @query.convert!(acceptable_formats)
381
367
  query.q.should == @icao_to_coordinates
382
368
  query.country_code.should == "US"
383
369
  end
384
-
370
+
385
371
  it "converts to geocode" do
386
372
  acceptable_formats = [:geocode]
387
373
  query = @query.convert!(acceptable_formats)
388
374
  query.q.should == @icao_to_geocode
389
375
  query.country_code.should == "US"
390
376
  end
391
-
377
+
392
378
  it "skips converting to postalcode" do
393
379
  acceptable_formats = [:postalcode]
394
380
  query = @query.convert!(acceptable_formats)
395
381
  query.should be_nil
396
382
  end
397
-
383
+
398
384
  it "skips converting to short_zipcode" do
399
385
  acceptable_formats = [:short_zipcode]
400
386
  query = @query.convert!(acceptable_formats)
401
387
  query.should be_nil
402
388
  end
403
-
389
+
404
390
  it "converts to weather_id" do
405
391
  acceptable_formats = [:weather_id]
406
392
  query = @query.convert!(acceptable_formats)
407
393
  query.q.should == @icao_to_weather_id
408
394
  query.country_code.should == "US"
409
395
  end
410
-
396
+
411
397
  it "skips converting to zipcode" do
412
398
  acceptable_formats = [:zipcode]
413
399
  query = @query.convert!(acceptable_formats)
414
400
  query.should be_nil
415
401
  end
416
-
417
402
  end
418
-
403
+
419
404
  describe "with an intial format of :geocode," do
420
-
421
405
  before(:each) do
422
406
  @query = Barometer::Query.new(@geocode)
423
407
  end
424
-
408
+
425
409
  it "converts to coordinates" do
426
410
  acceptable_formats = [:coordinates]
427
411
  query = @query.convert!(acceptable_formats)
428
- query.q.should == @geocode_to_coordinates
412
+
413
+ query_coords = query.q.split(',').map{|c| c.to_f}
414
+ expected_coords = @geocode_to_coordinates.split(',').map{|c| c.to_f}
415
+
416
+ query_coords[0].should be_within(0.00001).of(expected_coords[0])
417
+ query_coords[1].should be_within(0.00001).of(expected_coords[1])
429
418
  query.country_code.should == "US"
430
419
  end
431
-
420
+
432
421
  it "skips converting to icao" do
433
422
  acceptable_formats = [:icao]
434
423
  query = @query.convert!(acceptable_formats)
435
424
  query.should be_nil
436
425
  end
437
-
426
+
438
427
  it "skips converting to postalcode" do
439
428
  acceptable_formats = [:postalcode]
440
429
  query = @query.convert!(acceptable_formats)
441
430
  query.should be_nil
442
431
  end
443
-
432
+
444
433
  it "skips converting to short_zipcode" do
445
434
  acceptable_formats = [:short_zipcode]
446
435
  query = @query.convert!(acceptable_formats)
447
436
  query.should be_nil
448
437
  end
449
-
438
+
450
439
  it "converts to weather_id" do
451
440
  acceptable_formats = [:weather_id]
452
441
  query = @query.convert!(acceptable_formats)
453
442
  query.q.should == @geocode_to_weather_id
454
443
  query.country_code.should == "US"
455
444
  end
456
-
445
+
457
446
  it "skips converting to zipcode" do
458
447
  acceptable_formats = [:zipcode]
459
448
  query = @query.convert!(acceptable_formats)
460
449
  query.should be_nil
461
450
  end
462
-
463
451
  end
464
-
452
+
465
453
  describe "with an intial format of :coordinates," do
466
-
467
454
  before(:each) do
468
455
  @query = Barometer::Query.new(@coordinates)
469
456
  end
470
-
457
+
471
458
  it "converts to geocode" do
472
459
  acceptable_formats = [:geocode]
473
460
  query = @query.convert!(acceptable_formats)
474
461
  query.q.should == @coordinates_to_geocode
475
462
  query.country_code.should == "US"
476
463
  end
477
-
464
+
478
465
  it "skips converting to icao" do
479
466
  acceptable_formats = [:icao]
480
467
  query = @query.convert!(acceptable_formats)
481
468
  query.should be_nil
482
469
  end
483
-
470
+
484
471
  it "skips converting to postalcode" do
485
472
  acceptable_formats = [:postalcode]
486
473
  query = @query.convert!(acceptable_formats)
487
474
  query.should be_nil
488
475
  end
489
-
476
+
490
477
  it "skips converting to short_zipcode" do
491
478
  acceptable_formats = [:short_zipcode]
492
479
  query = @query.convert!(acceptable_formats)
493
480
  query.should be_nil
494
481
  end
495
-
482
+
496
483
  it "converts to weather_id" do
497
484
  acceptable_formats = [:weather_id]
498
485
  query = @query.convert!(acceptable_formats)
499
486
  query.q.should == @coordinates_to_weather_id
500
487
  query.country_code.should == "US"
501
488
  end
502
-
489
+
503
490
  it "skips converting to zipcode" do
504
491
  acceptable_formats = [:zipcode]
505
492
  query = @query.convert!(acceptable_formats)
506
493
  query.should be_nil
507
494
  end
508
-
509
495
  end
510
-
511
496
  end
512
-
513
497
  end
514
-
515
- end
498
+ end