barometer 0.3.2 → 0.5.0

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.
Files changed (108) hide show
  1. data/README.rdoc +78 -70
  2. data/VERSION.yml +2 -2
  3. data/bin/barometer +100 -37
  4. data/lib/barometer.rb +12 -8
  5. data/lib/barometer/base.rb +48 -20
  6. data/lib/barometer/data.rb +5 -1
  7. data/lib/barometer/data/current.rb +23 -15
  8. data/lib/barometer/data/distance.rb +15 -5
  9. data/lib/barometer/data/forecast.rb +23 -5
  10. data/lib/barometer/data/geo.rb +16 -54
  11. data/lib/barometer/data/local_datetime.rb +137 -0
  12. data/lib/barometer/data/local_time.rb +134 -0
  13. data/lib/barometer/data/location.rb +6 -1
  14. data/lib/barometer/data/measurement.rb +71 -42
  15. data/lib/barometer/data/night.rb +69 -0
  16. data/lib/barometer/data/pressure.rb +15 -5
  17. data/lib/barometer/data/speed.rb +16 -5
  18. data/lib/barometer/data/sun.rb +8 -20
  19. data/lib/barometer/data/temperature.rb +22 -9
  20. data/lib/barometer/data/units.rb +10 -19
  21. data/lib/barometer/data/zone.rb +135 -9
  22. data/lib/barometer/formats.rb +12 -0
  23. data/lib/barometer/formats/coordinates.rb +42 -0
  24. data/lib/barometer/formats/format.rb +46 -0
  25. data/lib/barometer/formats/geocode.rb +51 -0
  26. data/lib/barometer/formats/icao.rb +37 -0
  27. data/lib/barometer/formats/postalcode.rb +22 -0
  28. data/lib/barometer/formats/short_zipcode.rb +17 -0
  29. data/lib/barometer/formats/weather_id.rb +107 -0
  30. data/lib/barometer/formats/zipcode.rb +31 -0
  31. data/lib/barometer/query.rb +61 -232
  32. data/lib/barometer/services.rb +14 -4
  33. data/lib/barometer/translations/icao_country_codes.yml +9 -0
  34. data/lib/barometer/translations/weather_country_codes.yml +17 -0
  35. data/lib/barometer/weather.rb +51 -30
  36. data/lib/barometer/{services → weather_services}/google.rb +23 -26
  37. data/lib/barometer/weather_services/noaa.rb +6 -0
  38. data/lib/barometer/{services → weather_services}/service.rb +101 -92
  39. data/lib/barometer/weather_services/weather_bug.rb +6 -0
  40. data/lib/barometer/weather_services/weather_dot_com.rb +261 -0
  41. data/lib/barometer/{services → weather_services}/wunderground.rb +58 -76
  42. data/lib/barometer/{services → weather_services}/yahoo.rb +91 -121
  43. data/lib/barometer/web_services/geocode.rb +33 -0
  44. data/lib/barometer/web_services/weather_id.rb +37 -0
  45. data/lib/barometer/web_services/web_service.rb +32 -0
  46. data/lib/demometer/demometer.rb +31 -4
  47. data/lib/demometer/views/forecast.erb +20 -0
  48. data/lib/demometer/views/index.erb +10 -3
  49. data/lib/demometer/views/measurement.erb +8 -3
  50. data/lib/demometer/views/readme.erb +63 -24
  51. data/spec/barometer_spec.rb +18 -36
  52. data/spec/{data_current_spec.rb → data/current_spec.rb} +73 -49
  53. data/spec/{data_distance_spec.rb → data/distance_spec.rb} +30 -30
  54. data/spec/{data_forecast_spec.rb → data/forecast_spec.rb} +57 -15
  55. data/spec/data/geo_spec.rb +91 -0
  56. data/spec/data/local_datetime_spec.rb +269 -0
  57. data/spec/data/local_time_spec.rb +239 -0
  58. data/spec/{data_location_spec.rb → data/location_spec.rb} +12 -1
  59. data/spec/{data_measurement_spec.rb → data/measurement_spec.rb} +135 -66
  60. data/spec/data/night_measurement_spec.rb +136 -0
  61. data/spec/{data_pressure_spec.rb → data/pressure_spec.rb} +29 -29
  62. data/spec/{data_speed_spec.rb → data/speed_spec.rb} +30 -30
  63. data/spec/data/sun_spec.rb +49 -0
  64. data/spec/{data_temperature_spec.rb → data/temperature_spec.rb} +44 -44
  65. data/spec/{units_spec.rb → data/units_spec.rb} +6 -6
  66. data/spec/{data_zone_spec.rb → data/zone_spec.rb} +15 -15
  67. data/spec/fixtures/formats/weather_id/90210.xml +1 -0
  68. data/spec/fixtures/formats/weather_id/atlanta.xml +1 -0
  69. data/spec/fixtures/formats/weather_id/from_USGA0028.xml +1 -0
  70. data/spec/fixtures/formats/weather_id/new_york.xml +1 -0
  71. data/spec/fixtures/{geocode_40_73.xml → geocode/40_73.xml} +0 -0
  72. data/spec/fixtures/{geocode_90210.xml → geocode/90210.xml} +0 -0
  73. data/spec/fixtures/{geocode_T5B4M9.xml → geocode/T5B4M9.xml} +0 -0
  74. data/spec/fixtures/geocode/atlanta.xml +1 -0
  75. data/spec/fixtures/{geocode_calgary_ab.xml → geocode/calgary_ab.xml} +0 -0
  76. data/spec/fixtures/{geocode_ksfo.xml → geocode/ksfo.xml} +0 -0
  77. data/spec/fixtures/{geocode_newyork_ny.xml → geocode/newyork_ny.xml} +0 -0
  78. data/spec/fixtures/{google_calgary_ab.xml → services/google/calgary_ab.xml} +0 -0
  79. data/spec/fixtures/services/weather_dot_com/90210.xml +1 -0
  80. data/spec/fixtures/{current_calgary_ab.xml → services/wunderground/current_calgary_ab.xml} +0 -0
  81. data/spec/fixtures/{forecast_calgary_ab.xml → services/wunderground/forecast_calgary_ab.xml} +0 -0
  82. data/spec/fixtures/{yahoo_90210.xml → services/yahoo/90210.xml} +0 -0
  83. data/spec/formats/coordinates_spec.rb +158 -0
  84. data/spec/formats/format_spec.rb +73 -0
  85. data/spec/formats/geocode_spec.rb +179 -0
  86. data/spec/formats/icao_spec.rb +61 -0
  87. data/spec/formats/postalcode_spec.rb +59 -0
  88. data/spec/formats/short_zipcode_spec.rb +53 -0
  89. data/spec/formats/weather_id_spec.rb +191 -0
  90. data/spec/formats/zipcode_spec.rb +111 -0
  91. data/spec/query_spec.rb +261 -288
  92. data/spec/spec_helper.rb +128 -4
  93. data/spec/{service_google_spec.rb → weather_services/google_spec.rb} +46 -46
  94. data/spec/weather_services/services_spec.rb +1118 -0
  95. data/spec/weather_services/weather_dot_com_spec.rb +327 -0
  96. data/spec/weather_services/wunderground_spec.rb +332 -0
  97. data/spec/{service_yahoo_spec.rb → weather_services/yahoo_spec.rb} +65 -81
  98. data/spec/weather_spec.rb +73 -61
  99. data/spec/web_services/geocode_spec.rb +45 -0
  100. data/spec/web_services/web_services_spec.rb +26 -0
  101. metadata +88 -36
  102. data/lib/barometer/services/noaa.rb +0 -6
  103. data/lib/barometer/services/weather_bug.rb +0 -6
  104. data/lib/barometer/services/weather_dot_com.rb +0 -6
  105. data/spec/data_geo_spec.rb +0 -94
  106. data/spec/data_sun_spec.rb +0 -76
  107. data/spec/service_wunderground_spec.rb +0 -330
  108. data/spec/services_spec.rb +0 -1106
@@ -3,7 +3,10 @@ require 'spec_helper'
3
3
  describe "Query" do
4
4
 
5
5
  before(:each) do
6
- @zipcode = "90210"
6
+ @short_zipcode = "90210"
7
+ @zipcode = @short_zipcode
8
+ @long_zipcode = "90210-5555"
9
+ @weather_id = "USGA0028"
7
10
  @postal_code = "T5B 4M9"
8
11
  @coordinates = "40.756054,-73.986951"
9
12
  @geocode = "New York, NY"
@@ -12,47 +15,19 @@ describe "Query" do
12
15
  # actual conversions
13
16
  @zipcode_to_coordinates = "34.1030032,-118.4104684"
14
17
  @zipcode_to_geocode = "Beverly Hills, CA, USA"
18
+ @zipcode_to_weather_id = "USCA0090"
15
19
  @postalcode_to_coordinates = "53.570447,-113.456083"
16
20
  @geocode_to_coordinates = "40.756054,-73.986951"
21
+ @geocode_to_weather_id = "USNY0996"
17
22
  @coordinates_to_geocode = "New York, NY, USA"
23
+ @coordinates_to_weather_id = "USNY0996"
24
+ @icao_to_coordinates = "37.615223,-122.389979"
25
+ @icao_to_geocode = "San Francisco Airport, USA"
18
26
 
19
27
  Barometer.google_geocode_key = nil
20
- Barometer::Query.google_geocode_key = nil
21
28
  #Barometer.skip_graticule = true
22
29
  end
23
30
 
24
- describe "the class methods" do
25
-
26
- it "detects a zipcode" do
27
- Barometer::Query.is_us_zipcode?(@zipcode).should be_true
28
- Barometer::Query.is_us_zipcode?(@postal_code).should be_false
29
- Barometer::Query.is_us_zipcode?(@coordinates).should be_false
30
- Barometer::Query.is_coordinates?(@icao).should be_false
31
- end
32
-
33
- it "detects a postalcode" do
34
- Barometer::Query.is_canadian_postcode?(@postal_code).should be_true
35
- Barometer::Query.is_canadian_postcode?(@zipcode).should be_false
36
- Barometer::Query.is_canadian_postcode?(@coordinates).should be_false
37
- Barometer::Query.is_coordinates?(@icao).should be_false
38
- end
39
-
40
- it "detects a coordinates" do
41
- Barometer::Query.is_coordinates?(@coordinates).should be_true
42
- Barometer::Query.is_coordinates?(@zipcode).should be_false
43
- Barometer::Query.is_coordinates?(@postal_code).should be_false
44
- Barometer::Query.is_coordinates?(@icao).should be_false
45
- end
46
-
47
- it "detects an ICAO" do
48
- Barometer::Query.is_icao?(@coordinates).should be_false
49
- Barometer::Query.is_icao?(@zipcode).should be_false
50
- Barometer::Query.is_icao?(@postal_code).should be_false
51
- Barometer::Query.is_icao?(@icao).should be_true
52
- end
53
-
54
- end
55
-
56
31
  describe "determines the query format" do
57
32
 
58
33
  before(:each) do
@@ -60,18 +35,20 @@ describe "Query" do
60
35
  @query.country_code.should be_nil
61
36
  end
62
37
 
38
+ it "recognizes a short zip code" do
39
+ @query.q = @short_zipcode
40
+ @query.format.should be_nil
41
+ @query.analyze!
42
+ @query.format.to_sym.should == :short_zipcode
43
+ @query.country_code.should == "US"
44
+ end
45
+
63
46
  it "recognizes a zip code" do
64
- @query.q = @zipcode
47
+ @query.q = @long_zipcode
65
48
  @query.format.should be_nil
66
49
  @query.analyze!
67
50
  @query.format.to_sym.should == :zipcode
68
-
69
51
  @query.country_code.should == "US"
70
- @query.zipcode?.should be_true
71
- @query.postalcode?.should be_false
72
- @query.icao?.should be_false
73
- @query.coordinates?.should be_false
74
- @query.geocode?.should be_false
75
52
  end
76
53
 
77
54
  it "recognizes a postal code" do
@@ -79,13 +56,7 @@ describe "Query" do
79
56
  @query.format.should be_nil
80
57
  @query.analyze!
81
58
  @query.format.to_sym.should == :postalcode
82
-
83
59
  @query.country_code.should == "CA"
84
- @query.zipcode?.should be_false
85
- @query.postalcode?.should be_true
86
- @query.icao?.should be_false
87
- @query.coordinates?.should be_false
88
- @query.geocode?.should be_false
89
60
  end
90
61
 
91
62
  it "recognizes icao" do
@@ -93,13 +64,15 @@ describe "Query" do
93
64
  @query.format.should be_nil
94
65
  @query.analyze!
95
66
  @query.format.to_sym.should == :icao
96
-
97
- @query.country_code.should be_nil
98
- @query.zipcode?.should be_false
99
- @query.postalcode?.should be_false
100
- @query.icao?.should be_true
101
- @query.coordinates?.should be_false
102
- @query.geocode?.should be_false
67
+ @query.country_code.should == "US"
68
+ end
69
+
70
+ it "recognizes weather_id" do
71
+ @query.q = @weather_id
72
+ @query.format.should be_nil
73
+ @query.analyze!
74
+ @query.format.to_sym.should == :weather_id
75
+ @query.country_code.should == "US"
103
76
  end
104
77
 
105
78
  it "recognizes latitude/longitude" do
@@ -107,13 +80,7 @@ describe "Query" do
107
80
  @query.format.should be_nil
108
81
  @query.analyze!
109
82
  @query.format.to_sym.should == :coordinates
110
-
111
83
  @query.country_code.should be_nil
112
- @query.zipcode?.should be_false
113
- @query.postalcode?.should be_false
114
- @query.icao?.should be_false
115
- @query.coordinates?.should be_true
116
- @query.geocode?.should be_false
117
84
  end
118
85
 
119
86
  it "defaults to a general geo_location" do
@@ -121,13 +88,7 @@ describe "Query" do
121
88
  @query.format.should be_nil
122
89
  @query.analyze!
123
90
  @query.format.to_sym.should == :geocode
124
-
125
91
  @query.country_code.should be_nil
126
- @query.zipcode?.should be_false
127
- @query.postalcode?.should be_false
128
- @query.icao?.should be_false
129
- @query.coordinates?.should be_false
130
- @query.geocode?.should be_true
131
92
  end
132
93
 
133
94
  end
@@ -142,10 +103,6 @@ describe "Query" do
142
103
  @query.q.should be_nil
143
104
  end
144
105
 
145
- # it "responds to geo" do
146
- # @query.geo.should be_nil
147
- # end
148
-
149
106
  it "responds to format" do
150
107
  @query.format.should be_nil
151
108
  end
@@ -165,24 +122,13 @@ describe "Query" do
165
122
  end
166
123
 
167
124
  it "responds to google_api_key" do
168
- Barometer::Query.google_geocode_key.should be_nil
169
- end
170
-
171
- it "sets the google_api_key" do
172
- key = "KEY"
173
- Barometer::Query.google_geocode_key = key
174
- Barometer::Query.google_geocode_key.should == key
125
+ Barometer.google_geocode_key.should be_nil
175
126
  end
176
127
 
177
128
  it "defaults to the Module geocode key" do
178
129
  key = "KEY"
179
- Barometer::Query.google_geocode_key.should be_nil
180
130
  Barometer.google_geocode_key = key
181
- Barometer::Query.google_geocode_key.should == key
182
- end
183
-
184
- it "responds to preferred" do
185
- @query.preferred.should be_nil
131
+ Barometer.google_geocode_key.should == key
186
132
  end
187
133
 
188
134
  it "responds to geo" do
@@ -191,168 +137,6 @@ describe "Query" do
191
137
 
192
138
  end
193
139
 
194
- use_graticule = true
195
-
196
- if use_graticule
197
- describe "when converting queries" do
198
-
199
- before(:each) do
200
- @key = KEY
201
- url_start = "http://maps.google.com/maps/geo?"
202
- #
203
- # for Graticule and/or HTTParty geocoding
204
- #
205
- FakeWeb.register_uri(:get,
206
- "#{url_start}gl=US&key=#{@key}&output=xml&q=90210",
207
- :string => File.read(File.join(File.dirname(__FILE__),
208
- 'fixtures',
209
- 'geocode_90210.xml')
210
- )
211
- )
212
- FakeWeb.register_uri(:get,
213
- "#{url_start}gl=CA&key=#{@key}&output=xml&q=T5B%204M9",
214
- :string => File.read(File.join(File.dirname(__FILE__),
215
- 'fixtures',
216
- 'geocode_T5B4M9.xml')
217
- )
218
- )
219
- #
220
- # for Graticule geocoding
221
- #
222
- FakeWeb.register_uri(:get,
223
- "#{url_start}gl=&key=#{@key}&output=xml&q=New%20York,%20NY",
224
- :string => File.read(File.join(File.dirname(__FILE__),
225
- 'fixtures',
226
- 'geocode_newyork_ny.xml')
227
- )
228
- )
229
- FakeWeb.register_uri(:get,
230
- "#{url_start}gl=&key=#{@key}&output=xml&q=40.756054,-73.986951",
231
- :string => File.read(File.join(File.dirname(__FILE__),
232
- 'fixtures',
233
- 'geocode_40_73.xml')
234
- )
235
- )
236
- #
237
- # for HTTParty geocoding
238
- #
239
- FakeWeb.register_uri(:get,
240
- "#{url_start}output=xml&q=New%20York%2C%20NY&gl=&key=#{@key}",
241
- :string => File.read(File.join(File.dirname(__FILE__),
242
- 'fixtures',
243
- 'geocode_newyork_ny.xml')
244
- )
245
- )
246
- FakeWeb.register_uri(:get,
247
- "#{url_start}gl=&output=xml&q=#{CGI.escape("40.756054,-73.986951")}&key=#{@key}",
248
- :string => File.read(File.join(File.dirname(__FILE__),
249
- 'fixtures',
250
- 'geocode_40_73.xml')
251
- )
252
- )
253
- FakeWeb.register_uri(:get,
254
- "#{url_start}output=xml&q=KSFO&gl=&key=#{@key}",
255
- :string => File.read(File.join(File.dirname(__FILE__),
256
- 'fixtures',
257
- 'geocode_ksfo.xml')
258
- )
259
- )
260
- end
261
-
262
- describe "to coordinates," do
263
-
264
- before(:each) do
265
- Barometer::Query.google_geocode_key = @key
266
- end
267
-
268
- it "skips conversion unless Graticule enabled or no API key" do
269
- Barometer::Query.google_geocode_key = nil
270
- Barometer::Query.google_geocode_key.should be_nil
271
- Barometer.google_geocode_key = nil
272
- Barometer.google_geocode_key.should be_nil
273
- Barometer::Query.to_coordinates(@geocode, :geocode).should be_nil
274
- end
275
-
276
- it "attempts conversion if Graticule enabled and has API key" do
277
- Barometer::Query.to_coordinates(@geocode, :geocode).should_not be_nil
278
- end
279
-
280
- it "converts from geocode" do
281
- Barometer::Query.to_coordinates(@geocode, :geocode).first.should == "40.756054,-73.986951"
282
- end
283
-
284
- it "converts from zipcode" do
285
- Barometer::Query.to_coordinates(@zipcode, :zipcode).first.should == "34.1030032,-118.4104684"
286
- end
287
-
288
- it "converts from postalcode" do
289
- Barometer::Query.to_coordinates(@postal_code, :postalcode).first.should == "53.570447,-113.456083"
290
- end
291
-
292
- it "converts from icao" do
293
- Barometer::Query.to_coordinates(@icao, :icao).first.should == "37.615223,-122.389979"
294
- end
295
-
296
- end
297
-
298
- describe "to geocode" do
299
-
300
- before(:each) do
301
- Barometer::Query.google_geocode_key = @key
302
- end
303
-
304
- describe "when Graticule enabled," do
305
-
306
- it "converts from coordinates" do
307
- Barometer::Query.to_geocode(@coordinates, :coordinates).first.should == "New York, NY, USA"
308
- end
309
-
310
- it "converts from zipcode" do
311
- Barometer::Query.to_geocode(@zipcode, :zipcode).first.should == "Beverly Hills, CA, USA"
312
- end
313
-
314
- it "converts from postalcode" do
315
- Barometer::Query.to_geocode(@postal_code, :postalcode).first.should == @postal_code
316
- end
317
-
318
- it "converts from icao" do
319
- Barometer::Query.to_geocode(@icao, :icao).first.should == "San Francisco Airport, USA"
320
- end
321
-
322
- end
323
-
324
- describe "when Graticule disabled," do
325
-
326
- it "uses coordinates" do
327
- Barometer::Query.google_geocode_key = nil
328
- Barometer::Query.google_geocode_key.should be_nil
329
- Barometer.google_geocode_key = nil
330
- Barometer.google_geocode_key.should be_nil
331
- Barometer::Query.to_geocode(@coordinates, :coordinates).first.should == @coordinates
332
- end
333
-
334
- it "uses zipcode" do
335
- Barometer::Query.google_geocode_key = nil
336
- Barometer::Query.google_geocode_key.should be_nil
337
- Barometer.google_geocode_key = nil
338
- Barometer.google_geocode_key.should be_nil
339
- Barometer::Query.to_geocode(@zipcode, :zipcode).first.should == @zipcode
340
- end
341
-
342
- it "uses postalcode" do
343
- Barometer::Query.google_geocode_key = nil
344
- Barometer::Query.google_geocode_key.should be_nil
345
- Barometer.google_geocode_key = nil
346
- Barometer.google_geocode_key.should be_nil
347
- Barometer::Query.to_geocode(@postal_code, :postalcode).first.should == @postal_code
348
- end
349
-
350
- end
351
-
352
- end
353
-
354
- end
355
-
356
140
  describe "when returning the query to a Weather API" do
357
141
 
358
142
  it "raises an error if there are NO acceptable formats" do
@@ -364,62 +148,146 @@ describe "Query" do
364
148
  lambda { query.convert!(acceptable_formats) }.should raise_error
365
149
  end
366
150
 
367
- describe "and the query is already of an acceptable format" do
151
+ describe "and the query is already the preferred format" do
368
152
 
369
- before(:each) do
370
- # all formats accepted
371
- @acceptable_formats = [:zipcode, :postalcode, :geocode, :coordinates]
153
+ it "returns the short_zipcode untouched" do
154
+ preferred = [:short_zipcode]
155
+ query = Barometer::Query.new(@short_zipcode)
156
+ query.convert!(preferred).q.should == @short_zipcode
157
+ query.country_code.should == "US"
372
158
  end
373
159
 
374
- it "returns the zipcode untouched" do
375
- query = Barometer::Query.new(@zipcode)
376
- query.convert!(@acceptable_formats).should == @zipcode
160
+ it "returns the long_zipcode untouched" do
161
+ preferred = [:zipcode]
162
+ query = Barometer::Query.new(@long_zipcode)
163
+ query.convert!(preferred).q.should == @long_zipcode
377
164
  query.country_code.should == "US"
378
165
  end
379
166
 
380
167
  it "returns the postalcode untouched" do
168
+ preferred = [:postalcode]
381
169
  query = Barometer::Query.new(@postal_code)
382
- query.convert!(@acceptable_formats).should == @postal_code
170
+ query.convert!(preferred).q.should == @postal_code
383
171
  query.country_code.should == "CA"
384
172
  end
385
173
 
174
+ it "returns the icao untouched" do
175
+ preferred = [:icao]
176
+ query = Barometer::Query.new(@icao)
177
+ query.convert!(preferred).q.should == @icao
178
+ end
179
+
386
180
  it "returns the coordinates untouched" do
181
+ preferred = [:coordinates]
387
182
  query = Barometer::Query.new(@coordinates)
388
- query.convert!(@acceptable_formats).should == @coordinates
183
+ query.convert!(preferred).q.should == @coordinates
389
184
  end
390
185
 
391
186
  it "returns the geocode untouched" do
187
+ preferred = [:geocode]
392
188
  query = Barometer::Query.new(@geocode)
393
- query.convert!(@acceptable_formats).should == @geocode
189
+ query.convert!(preferred).q.should == @geocode
394
190
  end
395
191
 
396
192
  end
397
193
 
398
194
  describe "and the query needs converting" do
399
195
 
196
+ describe "with an intial format of :short_zipcode," do
197
+
198
+ before(:each) do
199
+ @query = Barometer::Query.new(@short_zipcode)
200
+ Barometer.google_geocode_key = KEY
201
+ end
202
+
203
+ it "converts to zipcode" do
204
+ acceptable_formats = [:zipcode]
205
+ query = @query.convert!(acceptable_formats)
206
+ query.q.should == @zipcode
207
+ query.country_code.should == "US"
208
+ end
209
+
210
+ it "converts to coordinates" do
211
+ acceptable_formats = [:coordinates]
212
+ query = @query.convert!(acceptable_formats)
213
+ query.q.should == @zipcode_to_coordinates
214
+ query.country_code.should == "US"
215
+ end
216
+
217
+ it "converts to geocode" do
218
+ acceptable_formats = [:geocode]
219
+ query = @query.convert!(acceptable_formats)
220
+ query.q.should == @zipcode_to_geocode
221
+ query.country_code.should == "US"
222
+ end
223
+
224
+ it "converts to weather_id" do
225
+ acceptable_formats = [:weather_id]
226
+ query = @query.convert!(acceptable_formats)
227
+ query.q.should == @zipcode_to_weather_id
228
+ query.country_code.should == "US"
229
+ end
230
+
231
+ it "skips converting to icao" do
232
+ acceptable_formats = [:icao]
233
+ query = @query.convert!(acceptable_formats)
234
+ query.should be_nil
235
+ end
236
+
237
+ it "skips converting to postalcode" do
238
+ acceptable_formats = [:postalcode]
239
+ query = @query.convert!(acceptable_formats)
240
+ query.should be_nil
241
+ end
242
+
243
+ end
244
+
400
245
  describe "with an intial format of :zipcode," do
401
246
 
402
247
  before(:each) do
403
248
  @query = Barometer::Query.new(@zipcode)
404
- Barometer::Query.google_geocode_key = KEY
249
+ Barometer.google_geocode_key = KEY
250
+ Barometer.force_geocode = false
405
251
  end
406
252
 
407
253
  it "converts to coordinates" do
408
254
  acceptable_formats = [:coordinates]
409
- @query.convert!(acceptable_formats).should == @zipcode_to_coordinates
410
- @query.country_code.should == "US"
255
+ query = @query.convert!(acceptable_formats)
256
+ query.q.should == @zipcode_to_coordinates
257
+ query.country_code.should == "US"
411
258
  end
412
259
 
413
260
  it "converts to geocode" do
414
261
  acceptable_formats = [:geocode]
415
- @query.convert!(acceptable_formats).should == @zipcode_to_geocode
416
- @query.country_code.should == "US"
262
+ query = @query.convert!(acceptable_formats)
263
+ query.q.should == @zipcode_to_geocode
264
+ query.country_code.should == "US"
265
+ end
266
+
267
+ it "skips converting to icao" do
268
+ acceptable_formats = [:icao]
269
+ query = @query.convert!(acceptable_formats)
270
+ query.should be_nil
417
271
  end
418
272
 
419
273
  it "skips converting to postalcode" do
420
274
  acceptable_formats = [:postalcode]
421
- @query.convert!(acceptable_formats).should be_nil
422
- @query.country_code.should == "US"
275
+ query = @query.convert!(acceptable_formats)
276
+ query.should be_nil
277
+ end
278
+
279
+ it "skips converting to short_zipcode" do
280
+ @query = Barometer::Query.new(@long_zipcode)
281
+ acceptable_formats = [:short_zipcode]
282
+ query = @query.convert!(acceptable_formats)
283
+ query.should be_nil
284
+ end
285
+
286
+ it "converts to weather_id" do
287
+ acceptable_formats = [:weather_id]
288
+ query = @query.convert!(acceptable_formats)
289
+ query.q.should == @zipcode_to_weather_id
290
+ query.country_code.should == "US"
423
291
  end
424
292
 
425
293
  end
@@ -428,52 +296,138 @@ describe "Query" do
428
296
 
429
297
  before(:each) do
430
298
  @query = Barometer::Query.new(@postal_code)
431
- Barometer::Query.google_geocode_key = KEY
299
+ Barometer.google_geocode_key = KEY
432
300
  end
433
301
 
434
302
  it "converts to coordinates" do
435
303
  acceptable_formats = [:coordinates]
436
- @query.convert!(acceptable_formats).should == @postalcode_to_coordinates
437
- @query.country_code.should == "CA"
304
+ query = @query.convert!(acceptable_formats)
305
+ query.q.should == @postalcode_to_coordinates
306
+ query.country_code.should == "CA"
438
307
  end
439
308
 
440
309
  it "skips converting to geocode" do
441
310
  acceptable_formats = [:geocode]
442
- @query.convert!(acceptable_formats).should == @postal_code
443
- @query.country_code.should == "CA"
311
+ query = @query.convert!(acceptable_formats)
312
+ query.should be_nil
313
+ end
314
+
315
+ it "skips converting to icao" do
316
+ acceptable_formats = [:icao]
317
+ query = @query.convert!(acceptable_formats)
318
+ query.should be_nil
319
+ end
320
+
321
+ it "skips converting to short_zipcode" do
322
+ acceptable_formats = [:short_zipcode]
323
+ query = @query.convert!(acceptable_formats)
324
+ query.should be_nil
325
+ end
326
+
327
+ it "skips converting to weather_id" do
328
+ acceptable_formats = [:weather_id]
329
+ query = @query.convert!(acceptable_formats)
330
+ query.should be_nil
444
331
  end
445
332
 
446
333
  it "skips converting to zipcode" do
447
334
  acceptable_formats = [:zipcode]
448
- @query.convert!(acceptable_formats).should be_nil
449
- @query.country_code.should == "CA"
335
+ query = @query.convert!(acceptable_formats)
336
+ query.should be_nil
450
337
  end
451
338
 
452
339
  end
453
340
 
454
- describe "with an intial format of :geocode," do
341
+ describe "with an intial format of :icao," do
455
342
 
456
343
  before(:each) do
457
- @query = Barometer::Query.new(@geocode)
458
- Barometer::Query.google_geocode_key = KEY
344
+ @query = Barometer::Query.new(@icao)
345
+ Barometer.google_geocode_key = KEY
459
346
  end
460
347
 
461
348
  it "converts to coordinates" do
462
349
  acceptable_formats = [:coordinates]
463
- @query.convert!(acceptable_formats).should == @geocode_to_coordinates
464
- @query.country_code.should == "US"
350
+ query = @query.convert!(acceptable_formats)
351
+ query.q.should == @icao_to_coordinates
352
+ query.country_code.should == "US"
353
+ end
354
+
355
+ it "converts to geocode" do
356
+ acceptable_formats = [:geocode]
357
+ query = @query.convert!(acceptable_formats)
358
+ query.q.should == @icao_to_geocode
359
+ query.country_code.should == "US"
360
+ end
361
+
362
+ it "skips converting to postalcode" do
363
+ acceptable_formats = [:postalcode]
364
+ query = @query.convert!(acceptable_formats)
365
+ query.should be_nil
366
+ end
367
+
368
+ it "skips converting to short_zipcode" do
369
+ acceptable_formats = [:short_zipcode]
370
+ query = @query.convert!(acceptable_formats)
371
+ query.should be_nil
372
+ end
373
+
374
+ it "skips converting to weather_id" do
375
+ acceptable_formats = [:weather_id]
376
+ query = @query.convert!(acceptable_formats)
377
+ query.should be_nil
465
378
  end
466
379
 
467
380
  it "skips converting to zipcode" do
468
381
  acceptable_formats = [:zipcode]
469
- @query.convert!(acceptable_formats).should be_nil
470
- @query.country_code.should be_nil
382
+ query = @query.convert!(acceptable_formats)
383
+ query.should be_nil
384
+ end
385
+
386
+ end
387
+
388
+ describe "with an intial format of :geocode," do
389
+
390
+ before(:each) do
391
+ @query = Barometer::Query.new(@geocode)
392
+ Barometer.google_geocode_key = KEY
393
+ end
394
+
395
+ it "converts to coordinates" do
396
+ acceptable_formats = [:coordinates]
397
+ query = @query.convert!(acceptable_formats)
398
+ query.q.should == @geocode_to_coordinates
399
+ query.country_code.should == "US"
400
+ end
401
+
402
+ it "skips converting to icao" do
403
+ acceptable_formats = [:icao]
404
+ query = @query.convert!(acceptable_formats)
405
+ query.should be_nil
471
406
  end
472
407
 
473
408
  it "skips converting to postalcode" do
474
409
  acceptable_formats = [:postalcode]
475
- @query.convert!(acceptable_formats).should be_nil
476
- @query.country_code.should be_nil
410
+ query = @query.convert!(acceptable_formats)
411
+ query.should be_nil
412
+ end
413
+
414
+ it "skips converting to short_zipcode" do
415
+ acceptable_formats = [:short_zipcode]
416
+ query = @query.convert!(acceptable_formats)
417
+ query.should be_nil
418
+ end
419
+
420
+ it "converts to weather_id" do
421
+ acceptable_formats = [:weather_id]
422
+ query = @query.convert!(acceptable_formats)
423
+ query.q.should == @geocode_to_weather_id
424
+ query.country_code.should == "US"
425
+ end
426
+
427
+ it "skips converting to zipcode" do
428
+ acceptable_formats = [:zipcode]
429
+ query = @query.convert!(acceptable_formats)
430
+ query.should be_nil
477
431
  end
478
432
 
479
433
  end
@@ -482,25 +436,45 @@ describe "Query" do
482
436
 
483
437
  before(:each) do
484
438
  @query = Barometer::Query.new(@coordinates)
485
- Barometer::Query.google_geocode_key = KEY
439
+ Barometer.google_geocode_key = KEY
486
440
  end
487
441
 
488
442
  it "converts to geocode" do
489
443
  acceptable_formats = [:geocode]
490
- @query.convert!(acceptable_formats).should == @coordinates_to_geocode
491
- @query.country_code.should == "US"
444
+ query = @query.convert!(acceptable_formats)
445
+ query.q.should == @coordinates_to_geocode
446
+ query.country_code.should == "US"
492
447
  end
493
448
 
494
- it "skips converting to zipcode" do
495
- acceptable_formats = [:zipcode]
496
- @query.convert!(acceptable_formats).should be_nil
497
- @query.country_code.should be_nil
449
+ it "skips converting to icao" do
450
+ acceptable_formats = [:icao]
451
+ query = @query.convert!(acceptable_formats)
452
+ query.should be_nil
498
453
  end
499
454
 
500
455
  it "skips converting to postalcode" do
501
456
  acceptable_formats = [:postalcode]
502
- @query.convert!(acceptable_formats).should be_nil
503
- @query.country_code.should be_nil
457
+ query = @query.convert!(acceptable_formats)
458
+ query.should be_nil
459
+ end
460
+
461
+ it "skips converting to short_zipcode" do
462
+ acceptable_formats = [:short_zipcode]
463
+ query = @query.convert!(acceptable_formats)
464
+ query.should be_nil
465
+ end
466
+
467
+ it "converts to weather_id" do
468
+ acceptable_formats = [:weather_id]
469
+ query = @query.convert!(acceptable_formats)
470
+ query.q.should == @coordinates_to_weather_id
471
+ query.country_code.should == "US"
472
+ end
473
+
474
+ it "skips converting to zipcode" do
475
+ acceptable_formats = [:zipcode]
476
+ query = @query.convert!(acceptable_formats)
477
+ query.should be_nil
504
478
  end
505
479
 
506
480
  end
@@ -508,6 +482,5 @@ describe "Query" do
508
482
  end
509
483
 
510
484
  end
511
- end
512
485
 
513
486
  end