barometer 0.8.0 → 0.9.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 (321) hide show
  1. data/.gitignore +2 -0
  2. data/.pelusa.yml +7 -0
  3. data/.travis.yml +6 -3
  4. data/Gemfile +11 -1
  5. data/README.md +89 -244
  6. data/Rakefile +1 -1
  7. data/barometer.gemspec +22 -24
  8. data/lib/barometer.rb +14 -65
  9. data/lib/barometer/base.rb +35 -65
  10. data/lib/barometer/data.rb +15 -20
  11. data/lib/barometer/data/attribute.rb +19 -0
  12. data/lib/barometer/data/attributes/distance.rb +11 -0
  13. data/lib/barometer/data/attributes/float.rb +11 -0
  14. data/lib/barometer/data/attributes/integer.rb +11 -0
  15. data/lib/barometer/data/attributes/location.rb +11 -0
  16. data/lib/barometer/data/attributes/pressure.rb +11 -0
  17. data/lib/barometer/data/attributes/sun.rb +15 -0
  18. data/lib/barometer/data/attributes/temperature.rb +11 -0
  19. data/lib/barometer/data/attributes/time.rb +11 -0
  20. data/lib/barometer/data/attributes/vector.rb +11 -0
  21. data/lib/barometer/data/attributes/zone.rb +11 -0
  22. data/lib/barometer/data/convertable_units.rb +145 -0
  23. data/lib/barometer/data/coordinates.rb +16 -0
  24. data/lib/barometer/data/distance.rb +14 -133
  25. data/lib/barometer/data/geo.rb +22 -59
  26. data/lib/barometer/data/location.rb +14 -20
  27. data/lib/barometer/data/pressure.rb +14 -135
  28. data/lib/barometer/data/sun.rb +24 -24
  29. data/lib/barometer/data/temperature.rb +14 -169
  30. data/lib/barometer/data/vector.rb +44 -0
  31. data/lib/barometer/data/zone.rb +109 -112
  32. data/lib/barometer/query.rb +23 -161
  33. data/lib/barometer/query/base.rb +88 -0
  34. data/lib/barometer/query/converter.rb +64 -0
  35. data/lib/barometer/query/converters/from_coordinates_to_noaa_station_id.rb +30 -0
  36. data/lib/barometer/query/converters/from_geocode_to_coordinates.rb +28 -0
  37. data/lib/barometer/query/converters/from_short_zipcode_to_zipcode.rb +28 -0
  38. data/lib/barometer/query/converters/from_weather_id_to_geocode.rb +30 -0
  39. data/lib/barometer/query/converters/from_woe_id_or_ipv4_to_geocode.rb +32 -0
  40. data/lib/barometer/query/converters/to_geocode.rb +30 -0
  41. data/lib/barometer/query/converters/to_weather_id.rb +30 -0
  42. data/lib/barometer/query/converters/to_woe_id.rb +30 -0
  43. data/lib/barometer/query/format.rb +59 -0
  44. data/lib/barometer/query/formats/base.rb +22 -0
  45. data/lib/barometer/query/formats/coordinates.rb +14 -0
  46. data/lib/barometer/query/formats/geocode.rb +15 -0
  47. data/lib/barometer/query/formats/icao.rb +35 -0
  48. data/lib/barometer/query/formats/ipv4_address.rb +19 -0
  49. data/lib/barometer/query/formats/noaa_station_id.rb +15 -0
  50. data/lib/barometer/query/formats/postalcode.rb +20 -0
  51. data/lib/barometer/query/formats/short_zipcode.rb +15 -0
  52. data/lib/barometer/{translations → query/formats/translations}/icao_country_codes.yml +0 -0
  53. data/lib/barometer/{translations → query/formats/translations}/weather_country_codes.yml +0 -0
  54. data/lib/barometer/query/formats/unknown.rb +14 -0
  55. data/lib/barometer/query/formats/weather_id.rb +33 -0
  56. data/lib/barometer/query/formats/woe_id.rb +28 -0
  57. data/lib/barometer/query/formats/zipcode.rb +15 -0
  58. data/lib/barometer/query/service.rb +13 -0
  59. data/lib/barometer/query/services/apis/geonames_timezone.rb +26 -0
  60. data/lib/barometer/query/services/apis/google_geocode.rb +35 -0
  61. data/lib/barometer/query/services/apis/noaa_station.rb +31 -0
  62. data/lib/barometer/query/services/apis/weather_id.rb +35 -0
  63. data/lib/barometer/query/services/apis/wunderground_timezone.rb +26 -0
  64. data/lib/barometer/query/services/apis/yahoo_placefinder.rb +35 -0
  65. data/lib/barometer/query/services/apis/yahoo_weather.rb +31 -0
  66. data/lib/barometer/query/services/from_weather_id.rb +64 -0
  67. data/lib/barometer/query/services/geonames_timezone.rb +18 -0
  68. data/lib/barometer/query/services/google_geocode.rb +106 -0
  69. data/lib/barometer/query/services/noaa_station_id.rb +28 -0
  70. data/lib/barometer/query/services/to_weather_id.rb +25 -0
  71. data/lib/barometer/query/services/to_woe_id.rb +29 -0
  72. data/lib/barometer/query/services/wunderground_timezone.rb +18 -0
  73. data/lib/barometer/query/services/yahoo_geocode.rb +69 -0
  74. data/lib/barometer/response.rb +12 -0
  75. data/lib/barometer/response/base.rb +57 -0
  76. data/lib/barometer/response/current.rb +27 -0
  77. data/lib/barometer/response/prediction.rb +41 -0
  78. data/lib/barometer/response/prediction_collection.rb +48 -0
  79. data/lib/barometer/utils.rb +17 -0
  80. data/lib/barometer/utils/address.rb +33 -0
  81. data/lib/barometer/utils/api.rb +30 -0
  82. data/lib/barometer/utils/config_reader.rb +40 -0
  83. data/lib/barometer/utils/get.rb +17 -0
  84. data/lib/barometer/utils/json_reader.rb +22 -0
  85. data/lib/barometer/utils/payload.rb +100 -0
  86. data/lib/barometer/utils/payload_request.rb +37 -0
  87. data/lib/barometer/utils/post.rb +24 -0
  88. data/lib/barometer/utils/time.rb +78 -0
  89. data/lib/barometer/{translations → utils/translations}/zone_codes.yml +0 -0
  90. data/lib/barometer/utils/versioned_registration.rb +70 -0
  91. data/lib/barometer/utils/xml_reader.rb +27 -0
  92. data/lib/barometer/utils/zone_code_lookup.rb +30 -0
  93. data/lib/barometer/version.rb +1 -1
  94. data/lib/barometer/weather.rb +44 -173
  95. data/lib/barometer/weather_service.rb +41 -0
  96. data/lib/barometer/weather_services/base.rb +50 -0
  97. data/lib/barometer/weather_services/forecast_io.rb +36 -0
  98. data/lib/barometer/weather_services/forecast_io/api.rb +22 -0
  99. data/lib/barometer/weather_services/forecast_io/query.rb +38 -0
  100. data/lib/barometer/weather_services/forecast_io/response.rb +31 -0
  101. data/lib/barometer/weather_services/forecast_io/response/current_weather.rb +78 -0
  102. data/lib/barometer/weather_services/forecast_io/response/forecasted_weather.rb +74 -0
  103. data/lib/barometer/weather_services/forecast_io/response/location.rb +19 -0
  104. data/lib/barometer/weather_services/forecast_io/response/timezone.rb +25 -0
  105. data/lib/barometer/weather_services/noaa.rb +21 -305
  106. data/lib/barometer/weather_services/noaa/current_api.rb +25 -0
  107. data/lib/barometer/weather_services/noaa/current_query.rb +30 -0
  108. data/lib/barometer/weather_services/noaa/current_response.rb +29 -0
  109. data/lib/barometer/weather_services/noaa/forecast_api.rb +25 -0
  110. data/lib/barometer/weather_services/noaa/forecast_query.rb +39 -0
  111. data/lib/barometer/weather_services/noaa/forecast_response.rb +28 -0
  112. data/lib/barometer/weather_services/noaa/response/current_location.rb +42 -0
  113. data/lib/barometer/weather_services/noaa/response/current_station.rb +46 -0
  114. data/lib/barometer/weather_services/noaa/response/current_weather.rb +82 -0
  115. data/lib/barometer/weather_services/noaa/response/forecasted_weather.rb +90 -0
  116. data/lib/barometer/weather_services/noaa/response/location.rb +19 -0
  117. data/lib/barometer/weather_services/noaa/response/timezone.rb +15 -0
  118. data/lib/barometer/weather_services/response.rb +9 -0
  119. data/lib/barometer/weather_services/response/location.rb +42 -0
  120. data/lib/barometer/weather_services/response/time_zone.rb +19 -0
  121. data/lib/barometer/weather_services/weather_bug.rb +24 -280
  122. data/lib/barometer/weather_services/weather_bug/current_api.rb +26 -0
  123. data/lib/barometer/weather_services/weather_bug/current_response.rb +33 -0
  124. data/lib/barometer/weather_services/weather_bug/forecast_api.rb +26 -0
  125. data/lib/barometer/weather_services/weather_bug/forecast_response.rb +29 -0
  126. data/lib/barometer/weather_services/weather_bug/query.rb +42 -0
  127. data/lib/barometer/weather_services/weather_bug/response/current_weather.rb +82 -0
  128. data/lib/barometer/weather_services/weather_bug/response/forecasted_weather.rb +67 -0
  129. data/lib/barometer/weather_services/weather_bug/response/location.rb +23 -0
  130. data/lib/barometer/weather_services/weather_bug/response/station.rb +43 -0
  131. data/lib/barometer/weather_services/weather_bug/response/sun.rb +32 -0
  132. data/lib/barometer/weather_services/weather_bug/response/time_helper.rb +52 -0
  133. data/lib/barometer/weather_services/weather_bug/response/timezone.rb +15 -0
  134. data/lib/barometer/weather_services/wunderground_v1.rb +32 -0
  135. data/lib/barometer/weather_services/wunderground_v1/current_api.rb +21 -0
  136. data/lib/barometer/weather_services/wunderground_v1/current_response.rb +31 -0
  137. data/lib/barometer/weather_services/wunderground_v1/forecast_api.rb +21 -0
  138. data/lib/barometer/weather_services/wunderground_v1/forecast_response.rb +33 -0
  139. data/lib/barometer/weather_services/wunderground_v1/query.rb +30 -0
  140. data/lib/barometer/weather_services/wunderground_v1/response/current_weather.rb +92 -0
  141. data/lib/barometer/weather_services/wunderground_v1/response/forecasted_weather.rb +87 -0
  142. data/lib/barometer/weather_services/wunderground_v1/response/full_timezone.rb +22 -0
  143. data/lib/barometer/weather_services/wunderground_v1/response/location.rb +43 -0
  144. data/lib/barometer/weather_services/wunderground_v1/response/station.rb +39 -0
  145. data/lib/barometer/weather_services/wunderground_v1/response/sun.rb +53 -0
  146. data/lib/barometer/weather_services/wunderground_v1/response/timezone.rb +15 -0
  147. data/lib/barometer/weather_services/yahoo.rb +16 -198
  148. data/lib/barometer/weather_services/yahoo/api.rb +21 -0
  149. data/lib/barometer/weather_services/yahoo/query.rb +42 -0
  150. data/lib/barometer/weather_services/yahoo/response.rb +39 -0
  151. data/lib/barometer/weather_services/yahoo/response/current_weather.rb +86 -0
  152. data/lib/barometer/weather_services/yahoo/response/forecasted_weather.rb +71 -0
  153. data/lib/barometer/weather_services/yahoo/response/location.rb +47 -0
  154. data/lib/barometer/weather_services/yahoo/response/sun.rb +43 -0
  155. data/lib/barometer/weather_services/yahoo/response/timezone.rb +15 -0
  156. data/spec/barometer_spec.rb +18 -120
  157. data/spec/base_spec.rb +114 -0
  158. data/spec/cassettes/Converter_FromCoordinatesToNoaaStationId.json +1 -0
  159. data/spec/cassettes/Converter_FromWeatherIdToGeocode.json +1 -0
  160. data/spec/cassettes/Converter_FromWoeIdOrIpv4ToGeocode.json +1 -0
  161. data/spec/cassettes/Converter_ToGeocode.json +1 -0
  162. data/spec/cassettes/Converter_ToWeatherId.json +1 -0
  163. data/spec/cassettes/Converter_ToWoeId.json +1 -0
  164. data/spec/cassettes/Service_FromWeatherId.json +1 -0
  165. data/spec/cassettes/Service_GoogleGeocode.json +1 -0
  166. data/spec/cassettes/Service_NoaaStation.json +1 -0
  167. data/spec/cassettes/Service_ToWeatherId.json +1 -0
  168. data/spec/cassettes/Service_ToWoeId.json +1 -0
  169. data/spec/cassettes/Service_YahooGeocode.json +1 -0
  170. data/spec/cassettes/WeatherService_ForecastIo.json +1 -0
  171. data/spec/cassettes/WeatherService_Noaa.json +1 -1
  172. data/spec/cassettes/WeatherService_WeatherBug.json +1 -1
  173. data/spec/cassettes/WeatherService_WundergroundV1.json +1 -0
  174. data/spec/cassettes/WeatherService_Yahoo.json +1 -1
  175. data/spec/data/attributes/distance_spec.rb +60 -0
  176. data/spec/data/attributes/location_spec.rb +41 -0
  177. data/spec/data/attributes/pressure_spec.rb +60 -0
  178. data/spec/data/attributes/sun_spec.rb +33 -0
  179. data/spec/data/attributes/temperature_spec.rb +60 -0
  180. data/spec/data/attributes/time_spec.rb +58 -0
  181. data/spec/data/attributes/vector_spec.rb +43 -0
  182. data/spec/data/attributes/zone_spec.rb +34 -0
  183. data/spec/data/convertable_units_spec.rb +299 -0
  184. data/spec/data/coordinates_spec.rb +15 -0
  185. data/spec/data/distance_spec.rb +49 -333
  186. data/spec/data/geo_spec.rb +72 -71
  187. data/spec/data/location_spec.rb +70 -65
  188. data/spec/data/pressure_spec.rb +49 -333
  189. data/spec/data/sun_spec.rb +57 -81
  190. data/spec/data/temperature_spec.rb +49 -393
  191. data/spec/data/vector_spec.rb +100 -0
  192. data/spec/data/zone_spec.rb +199 -266
  193. data/spec/query/base_spec.rb +296 -0
  194. data/spec/query/converter_spec.rb +98 -0
  195. data/spec/query/converters/from_coordinates_to_noaa_station_id_spec.rb +35 -0
  196. data/spec/query/converters/from_geocode_to_coordinates_spec.rb +25 -0
  197. data/spec/query/converters/from_short_zipcode_to_zipcode_spec.rb +31 -0
  198. data/spec/query/converters/from_weather_id_to_geocode_spec.rb +40 -0
  199. data/spec/query/converters/from_woe_id_or_ipv4_to_geocode_spec.rb +51 -0
  200. data/spec/query/converters/to_geocode_spec.rb +99 -0
  201. data/spec/query/converters/to_weather_id_spec.rb +35 -0
  202. data/spec/query/converters/to_woe_id_spec.rb +74 -0
  203. data/spec/query/formats/base_spec.rb +15 -0
  204. data/spec/query/formats/coordinates_spec.rb +13 -0
  205. data/spec/query/formats/geocode_spec.rb +9 -0
  206. data/spec/query/formats/icao_spec.rb +20 -0
  207. data/spec/query/formats/ipv4_address_spec.rb +33 -0
  208. data/spec/query/formats/noaa_station_id_spec.rb +9 -0
  209. data/spec/query/formats/postalcode_spec.rb +18 -0
  210. data/spec/query/formats/short_zipcode_spec.rb +18 -0
  211. data/spec/query/formats/unknown_spec.rb +9 -0
  212. data/spec/query/formats/weather_id_spec.rb +31 -0
  213. data/spec/query/formats/woe_id_spec.rb +45 -0
  214. data/spec/query/formats/zipcode_spec.rb +18 -0
  215. data/spec/query/formats_spec.rb +55 -0
  216. data/spec/query/services/from_weather_id_spec.rb +54 -0
  217. data/spec/query/services/google_geocode_spec.rb +60 -0
  218. data/spec/query/services/noaa_station_id_spec.rb +23 -0
  219. data/spec/query/services/to_weather_id_spec.rb +23 -0
  220. data/spec/query/services/to_woe_id_spec.rb +51 -0
  221. data/spec/query/services/yahoo_geocode_spec.rb +72 -0
  222. data/spec/response/base_spec.rb +103 -0
  223. data/spec/response/current_spec.rb +33 -0
  224. data/spec/response/predicition_spec.rb +65 -0
  225. data/spec/response/prediction_collection_spec.rb +97 -0
  226. data/spec/spec_helper.rb +14 -12
  227. data/spec/support/key_file_parser.rb +22 -0
  228. data/spec/support/matchers/formats.rb +36 -0
  229. data/spec/support/matchers/have_data.rb +46 -0
  230. data/spec/support/matchers/have_field.rb +128 -0
  231. data/spec/support/matchers/have_forecast.rb +46 -0
  232. data/spec/support/matchers/path.rb +23 -0
  233. data/spec/support/query_factory.rb +20 -0
  234. data/spec/utils/address_spec.rb +67 -0
  235. data/spec/utils/config_reader_spec.rb +157 -0
  236. data/spec/utils/get_spec.rb +22 -0
  237. data/spec/utils/payload_request_spec.rb +69 -0
  238. data/spec/utils/payload_spec.rb +168 -0
  239. data/spec/utils/post_spec.rb +20 -0
  240. data/spec/utils/time_spec.rb +93 -0
  241. data/spec/utils/versioned_registration_spec.rb +105 -0
  242. data/spec/weather_services/base_spec.rb +116 -0
  243. data/spec/weather_services/forecast_io_spec.rb +71 -0
  244. data/spec/weather_services/noaa/current_response_spec.rb +22 -0
  245. data/spec/weather_services/noaa/forecast_response_spec.rb +33 -0
  246. data/spec/weather_services/noaa_spec.rb +68 -166
  247. data/spec/weather_services/weather_bug/current_response_spec.rb +64 -0
  248. data/spec/weather_services/weather_bug/forecast_response_spec.rb +23 -0
  249. data/spec/weather_services/weather_bug_spec.rb +62 -202
  250. data/spec/weather_services/wunderground_v1/current_response_spec.rb +19 -0
  251. data/spec/weather_services/wunderground_v1/forecast_response_spec.rb +62 -0
  252. data/spec/weather_services/wunderground_v1_spec.rb +78 -0
  253. data/spec/weather_services/yahoo/response_spec.rb +73 -0
  254. data/spec/weather_services/yahoo_spec.rb +52 -135
  255. data/spec/weather_services_spec.rb +103 -0
  256. data/spec/weather_spec.rb +167 -347
  257. metadata +342 -123
  258. data/.document +0 -5
  259. data/TODO +0 -60
  260. data/bin/barometer +0 -441
  261. data/lib/barometer/data/local_datetime.rb +0 -145
  262. data/lib/barometer/data/local_time.rb +0 -134
  263. data/lib/barometer/data/speed.rb +0 -158
  264. data/lib/barometer/data/units.rb +0 -49
  265. data/lib/barometer/formats.rb +0 -13
  266. data/lib/barometer/formats/coordinates.rb +0 -57
  267. data/lib/barometer/formats/format.rb +0 -64
  268. data/lib/barometer/formats/geocode.rb +0 -60
  269. data/lib/barometer/formats/icao.rb +0 -37
  270. data/lib/barometer/formats/postalcode.rb +0 -22
  271. data/lib/barometer/formats/short_zipcode.rb +0 -17
  272. data/lib/barometer/formats/weather_id.rb +0 -92
  273. data/lib/barometer/formats/woe_id.rb +0 -150
  274. data/lib/barometer/formats/zipcode.rb +0 -31
  275. data/lib/barometer/key_file_parser.rb +0 -20
  276. data/lib/barometer/measurements/measurement.rb +0 -202
  277. data/lib/barometer/measurements/result.rb +0 -207
  278. data/lib/barometer/measurements/result_array.rb +0 -75
  279. data/lib/barometer/services.rb +0 -19
  280. data/lib/barometer/weather_services/service.rb +0 -189
  281. data/lib/barometer/weather_services/wunderground.rb +0 -264
  282. data/lib/barometer/web_services/geocode.rb +0 -34
  283. data/lib/barometer/web_services/noaa_station_id.rb +0 -53
  284. data/lib/barometer/web_services/placemaker.rb +0 -95
  285. data/lib/barometer/web_services/timezone.rb +0 -38
  286. data/lib/barometer/web_services/weather_id.rb +0 -50
  287. data/lib/barometer/web_services/web_service.rb +0 -29
  288. data/spec/cassettes/Barometer.json +0 -1
  289. data/spec/cassettes/Query.json +0 -1
  290. data/spec/cassettes/Query_Format_Coordinates.json +0 -1
  291. data/spec/cassettes/Query_Format_Geocode.json +0 -1
  292. data/spec/cassettes/Query_Format_WeatherID.json +0 -1
  293. data/spec/cassettes/Query_Format_WoeID.json +0 -1
  294. data/spec/cassettes/WeatherService.json +0 -1
  295. data/spec/cassettes/WeatherService_Wunderground.json +0 -1
  296. data/spec/cassettes/WebService_Geocode.json +0 -1
  297. data/spec/cassettes/WebService_NoaaStation.json +0 -1
  298. data/spec/data/local_datetime_spec.rb +0 -274
  299. data/spec/data/local_time_spec.rb +0 -239
  300. data/spec/data/speed_spec.rb +0 -374
  301. data/spec/data/units_spec.rb +0 -101
  302. data/spec/formats/coordinates_spec.rb +0 -166
  303. data/spec/formats/format_spec.rb +0 -74
  304. data/spec/formats/geocode_spec.rb +0 -163
  305. data/spec/formats/icao_spec.rb +0 -55
  306. data/spec/formats/postalcode_spec.rb +0 -53
  307. data/spec/formats/short_zipcode_spec.rb +0 -47
  308. data/spec/formats/weather_id_spec.rb +0 -182
  309. data/spec/formats/woe_id_spec.rb +0 -211
  310. data/spec/formats/zipcode_spec.rb +0 -103
  311. data/spec/key_file_parser_spec.rb +0 -28
  312. data/spec/measurements/measurement_spec.rb +0 -381
  313. data/spec/measurements/result_array_spec.rb +0 -150
  314. data/spec/measurements/result_spec.rb +0 -632
  315. data/spec/query_spec.rb +0 -498
  316. data/spec/weather_services/services_spec.rb +0 -135
  317. data/spec/weather_services/wunderground_spec.rb +0 -179
  318. data/spec/web_services/geocode_spec.rb +0 -31
  319. data/spec/web_services/noaa_station_id_spec.rb +0 -33
  320. data/spec/web_services/placemaker_spec.rb +0 -41
  321. data/spec/web_services/web_services_spec.rb +0 -20
@@ -1,55 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::Icao do
4
- before(:each) do
5
- @valid = "KSFO"
6
- @invalid = "invalid"
7
- end
8
-
9
- describe "and class methods" do
10
- it "returns a format" do
11
- Barometer::Query::Format::Icao.format.should == :icao
12
- end
13
-
14
- it "returns a country" do
15
- Barometer::Query::Format::Icao.country_code.should be_nil
16
- Barometer::Query::Format::Icao.country_code("KSFO").should == "US"
17
- Barometer::Query::Format::Icao.country_code("CYYC").should == "CA"
18
- Barometer::Query::Format::Icao.country_code("ETAA").should == "DE"
19
- end
20
-
21
- it "returns a regex" do
22
- Barometer::Query::Format::Icao.regex.should_not be_nil
23
- Barometer::Query::Format::Icao.regex.is_a?(Regexp).should be_true
24
- end
25
-
26
- it "returns the convertable_formats" do
27
- Barometer::Query::Format::Icao.convertable_formats.should_not be_nil
28
- Barometer::Query::Format::Icao.convertable_formats.is_a?(Array).should be_true
29
- Barometer::Query::Format::Icao.convertable_formats.should == []
30
- end
31
-
32
- describe "is?," do
33
- it "recognizes a valid format" do
34
- Barometer::Query::Format::Icao.is?(@valid).should be_true
35
- end
36
-
37
- it "recognizes non-valid format" do
38
- Barometer::Query::Format::Icao.is?(@invalid).should be_false
39
- end
40
- end
41
-
42
- it "stubs to" do
43
- Barometer::Query::Format::Icao.to.should be_nil
44
- end
45
-
46
- it "stubs convertable_formats" do
47
- Barometer::Query::Format::Icao.convertable_formats.should == []
48
- end
49
-
50
- it "doesn't convert" do
51
- query = Barometer::Query.new(@valid)
52
- Barometer::Query::Format::Icao.converts?(query).should be_false
53
- end
54
- end
55
- end
@@ -1,53 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::Postalcode do
4
- before(:each) do
5
- @valid = "T5B 4M9"
6
- @invalid = "90210"
7
- end
8
-
9
- describe "and class methods" do
10
- it "returns a format" do
11
- Barometer::Query::Format::Postalcode.format.should == :postalcode
12
- end
13
-
14
- it "returns a country" do
15
- Barometer::Query::Format::Postalcode.country_code.should == "CA"
16
- Barometer::Query::Format::Postalcode.country_code("ignored").should == "CA"
17
- end
18
-
19
- it "returns a regex" do
20
- Barometer::Query::Format::Postalcode.regex.should_not be_nil
21
- Barometer::Query::Format::Postalcode.regex.is_a?(Regexp).should be_true
22
- end
23
-
24
- it "returns the convertable_formats" do
25
- Barometer::Query::Format::Postalcode.convertable_formats.should_not be_nil
26
- Barometer::Query::Format::Postalcode.convertable_formats.is_a?(Array).should be_true
27
- Barometer::Query::Format::Postalcode.convertable_formats.should == []
28
- end
29
-
30
- describe "is?," do
31
- it "recognizes a valid format" do
32
- Barometer::Query::Format::Postalcode.is?(@valid).should be_true
33
- end
34
-
35
- it "recognizes non-valid format" do
36
- Barometer::Query::Format::Postalcode.is?(@invalid).should be_false
37
- end
38
- end
39
-
40
- it "stubs to" do
41
- Barometer::Query::Format::Postalcode.to.should be_nil
42
- end
43
-
44
- it "stubs convertable_formats" do
45
- Barometer::Query::Format::Postalcode.convertable_formats.should == []
46
- end
47
-
48
- it "doesn't convert" do
49
- query = Barometer::Query.new(@valid)
50
- Barometer::Query::Format::Postalcode.converts?(query).should be_false
51
- end
52
- end
53
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::ShortZipcode do
4
- before(:each) do
5
- @valid = "90210"
6
- @invalid = "90210-5555"
7
- end
8
-
9
- describe "and class methods" do
10
- it "returns a format" do
11
- Barometer::Query::Format::ShortZipcode.format.should == :short_zipcode
12
- end
13
-
14
- it "returns a country" do
15
- Barometer::Query::Format::ShortZipcode.country_code.should == "US"
16
- Barometer::Query::Format::ShortZipcode.country_code("ignored").should == "US"
17
- end
18
-
19
- it "returns a regex" do
20
- Barometer::Query::Format::ShortZipcode.regex.should_not be_nil
21
- Barometer::Query::Format::ShortZipcode.regex.is_a?(Regexp).should be_true
22
- end
23
-
24
- describe "is?," do
25
- it "recognizes a valid format" do
26
- Barometer::Query::Format::ShortZipcode.is?(@valid).should be_true
27
- end
28
-
29
- it "recognizes non-valid format" do
30
- Barometer::Query::Format::ShortZipcode.is?(@invalid).should be_false
31
- end
32
- end
33
-
34
- it "stubs to" do
35
- Barometer::Query::Format::ShortZipcode.to.should be_nil
36
- end
37
-
38
- it "stubs convertable_formats" do
39
- Barometer::Query::Format::ShortZipcode.convertable_formats.should == []
40
- end
41
-
42
- it "doesn't convert" do
43
- query = Barometer::Query.new(@valid)
44
- Barometer::Query::Format::ShortZipcode.converts?(query).should be_false
45
- end
46
- end
47
- end
@@ -1,182 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::WeatherID, :vcr => {
4
- :cassette_name => "Query::Format::WeatherID"
5
- } do
6
- before(:each) do
7
- @short_zipcode = "90210"
8
- @zipcode = @short_zipcode
9
- @long_zipcode = "90210-5555"
10
- @weather_id = "USGA0028"
11
- @postal_code = "T5B 4M9"
12
- @coordinates = "40.756054,-73.986951"
13
- @geocode = "New York, NY"
14
- @icao = "KSFO"
15
- end
16
-
17
- describe "and class methods" do
18
- before(:each) do
19
- @us_query = "USGA0000"
20
- @ca_query = "CAAB0000"
21
- @es_query = "SPXX0000"
22
- end
23
-
24
- it "returns a format" do
25
- Barometer::Query::Format::WeatherID.format.should == :weather_id
26
- end
27
-
28
- it "returns a country" do
29
- Barometer::Query::Format::WeatherID.country_code.should be_nil
30
- Barometer::Query::Format::WeatherID.country_code("i").should be_nil
31
- Barometer::Query::Format::WeatherID.country_code(@us_query).should == "US"
32
- Barometer::Query::Format::WeatherID.country_code(@ca_query).should == "CA"
33
- Barometer::Query::Format::WeatherID.country_code(@es_query).should == "ES"
34
- end
35
-
36
- it "returns a regex" do
37
- Barometer::Query::Format::WeatherID.regex.should_not be_nil
38
- Barometer::Query::Format::WeatherID.regex.is_a?(Regexp).should be_true
39
- end
40
-
41
- it "returns the convertable_formats" do
42
- Barometer::Query::Format::WeatherID.convertable_formats.should_not be_nil
43
- Barometer::Query::Format::WeatherID.convertable_formats.is_a?(Array).should be_true
44
- Barometer::Query::Format::WeatherID.convertable_formats.include?(:short_zipcode).should be_true
45
- Barometer::Query::Format::WeatherID.convertable_formats.include?(:zipcode).should be_true
46
- Barometer::Query::Format::WeatherID.convertable_formats.include?(:coordinates).should be_true
47
- Barometer::Query::Format::WeatherID.convertable_formats.include?(:geocode).should be_true
48
- end
49
-
50
- describe "is?," do
51
- before(:each) do
52
- @valid = "USGA0028"
53
- @invalid = "invalid"
54
- end
55
-
56
- it "recognizes a valid format" do
57
- Barometer::Query::Format::WeatherID.is?(@valid).should be_true
58
- end
59
-
60
- it "recognizes non-valid format" do
61
- Barometer::Query::Format::WeatherID.is?(@invalid).should be_false
62
- end
63
- end
64
-
65
- describe "fixing country codes" do
66
- it "doesn't fix a correct code" do
67
- Barometer::Query::Format::WeatherID.send("_fix_country", "CA").should == "CA"
68
- end
69
-
70
- it "fixes an incorrect code" do
71
- Barometer::Query::Format::WeatherID.send("_fix_country", "SP").should == "ES"
72
- end
73
- end
74
-
75
- describe "when reversing lookup" do
76
- it "requires a Barometer::Query object" do
77
- lambda { Barometer::Query::Format::WeatherID.reverse }.should raise_error(ArgumentError)
78
- lambda { Barometer::Query::Format::WeatherID.reverse("invalid") }.should raise_error(ArgumentError)
79
- query = Barometer::Query.new(@weather_id)
80
- query.is_a?(Barometer::Query).should be_true
81
- lambda { Barometer::Query::Format::WeatherID.reverse(original_query) }.should_not raise_error(ArgumentError)
82
- end
83
-
84
- it "returns a Barometer::Query" do
85
- query = Barometer::Query.new(@weather_id)
86
- Barometer::Query::Format::WeatherID.reverse(query).is_a?(Barometer::Query).should be_true
87
- end
88
-
89
- it "reverses a valid weather_id (US)" do
90
- query = Barometer::Query.new(@weather_id)
91
- new_query = Barometer::Query::Format::WeatherID.reverse(query)
92
- new_query.q.should == "Atlanta, GA, US"
93
- new_query.country_code.should be_nil
94
- new_query.format.should == :geocode
95
- new_query.geo.should be_nil
96
- end
97
-
98
- it "doesn't reverse an invalid weather_id" do
99
- query = Barometer::Query.new(@zipcode)
100
- Barometer::Query::Format::WeatherID.reverse(query).should be_nil
101
- end
102
- end
103
-
104
- describe "when converting using 'to'," do
105
- it "requires a Barometer::Query object" do
106
- lambda { Barometer::Query::Format::WeatherID.to }.should raise_error(ArgumentError)
107
- lambda { Barometer::Query::Format::WeatherID.to("invalid") }.should raise_error(ArgumentError)
108
- query = Barometer::Query.new(@zipcode)
109
- query.is_a?(Barometer::Query).should be_true
110
- lambda { Barometer::Query::Format::WeatherID.to(original_query) }.should_not raise_error(ArgumentError)
111
- end
112
-
113
- it "returns a Barometer::Query" do
114
- query = Barometer::Query.new(@short_zipcode)
115
- Barometer::Query::Format::WeatherID.to(query).is_a?(Barometer::Query).should be_true
116
- end
117
-
118
- it "converts from short_zipcode" do
119
- query = Barometer::Query.new(@short_zipcode)
120
- query.format.should == :short_zipcode
121
- new_query = Barometer::Query::Format::WeatherID.to(query)
122
- new_query.q.should == "USCA0090"
123
- new_query.country_code.should == "US"
124
- new_query.format.should == :weather_id
125
- new_query.geo.should_not be_nil
126
- end
127
-
128
- it "converts from zipcode" do
129
- query = Barometer::Query.new(@zipcode)
130
- query.format = :zipcode
131
- query.format.should == :zipcode
132
- new_query = Barometer::Query::Format::WeatherID.to(query)
133
- new_query.q.should == "USCA0090"
134
- new_query.country_code.should == "US"
135
- new_query.format.should == :weather_id
136
- new_query.geo.should_not be_nil
137
- end
138
-
139
- it "converts from coordinates" do
140
- query = Barometer::Query.new(@coordinates)
141
- query.format.should == :coordinates
142
- new_query = Barometer::Query::Format::WeatherID.to(query)
143
- new_query.q.should == "USNY0996"
144
- new_query.country_code.should == "US"
145
- new_query.format.should == :weather_id
146
- new_query.geo.should_not be_nil
147
- end
148
-
149
- it "converts from geocode" do
150
- query = Barometer::Query.new(@geocode)
151
- query.format.should == :geocode
152
- new_query = Barometer::Query::Format::WeatherID.to(query)
153
- new_query.q.should == "USNY0996"
154
- new_query.country_code.should == "US"
155
- new_query.format.should == :weather_id
156
- new_query.geo.should be_nil
157
- end
158
-
159
- it "converts from icao" do
160
- query = Barometer::Query.new(@icao)
161
- query.format.should == :icao
162
- new_query = Barometer::Query::Format::WeatherID.to(query)
163
- new_query.q.should == "USCA0987"
164
- new_query.country_code.should == "US"
165
- new_query.format.should == :weather_id
166
- new_query.geo.should_not be_nil
167
- end
168
-
169
- it "returns nil for other formats" do
170
- query = Barometer::Query.new(@weather_id)
171
- query.format.should == :weather_id
172
- new_query = Barometer::Query::Format::WeatherID.to(query)
173
- new_query.should be_nil
174
-
175
- query = Barometer::Query.new(@postal_code)
176
- query.format.should == :postalcode
177
- new_query = Barometer::Query::Format::WeatherID.to(query)
178
- new_query.should be_nil
179
- end
180
- end
181
- end
182
- end
@@ -1,211 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require "addressable/uri"
3
-
4
- params_in_body = lambda do |request_1, request_2|
5
- a1 = Addressable::URI.parse("?#{request_1.body}")
6
- a2 = Addressable::URI.parse("?#{request_2.body}")
7
- a1.query_values == a2.query_values
8
- end
9
-
10
- describe Barometer::Query::Format::WoeID, :vcr => {
11
- :match_requests_on => [:method, :uri, params_in_body],
12
- :cassette_name => "Query::Format::WoeID"
13
- } do
14
- before(:each) do
15
- @short_zipcode = "90210"
16
- @zipcode = @short_zipcode
17
- @long_zipcode = "90210-5555"
18
- @weather_id = "USGA0028"
19
- @postal_code = "T5B 4M9"
20
- @coordinates = "40.756054,-73.986951"
21
- @geocode = "New York, NY"
22
- @icao = "KSFO"
23
- @woe_id = "615702"
24
- end
25
-
26
- describe "and class methods" do
27
- it "returns a format" do
28
- Barometer::Query::Format::WoeID.format.should == :woe_id
29
- end
30
-
31
- it "returns a country" do
32
- Barometer::Query::Format::WoeID.country_code.should be_nil
33
- end
34
-
35
- it "returns a regex" do
36
- Barometer::Query::Format::WoeID.regex.should_not be_nil
37
- Barometer::Query::Format::WoeID.regex.is_a?(Regexp).should be_true
38
- end
39
-
40
- it "returns the convertable_formats" do
41
- Barometer::Query::Format::WoeID.convertable_formats.should_not be_nil
42
- Barometer::Query::Format::WoeID.convertable_formats.is_a?(Array).should be_true
43
- Barometer::Query::Format::WoeID.convertable_formats.include?(:short_zipcode).should be_true
44
- Barometer::Query::Format::WoeID.convertable_formats.include?(:zipcode).should be_true
45
- Barometer::Query::Format::WoeID.convertable_formats.include?(:postalcode).should be_true
46
- Barometer::Query::Format::WoeID.convertable_formats.include?(:weather_id).should be_true
47
- Barometer::Query::Format::WoeID.convertable_formats.include?(:coordinates).should be_true
48
- Barometer::Query::Format::WoeID.convertable_formats.include?(:icao).should be_true
49
- Barometer::Query::Format::WoeID.convertable_formats.include?(:geocode).should be_true
50
- end
51
-
52
- describe "is?," do
53
- it "recognizes a valid 4 digit code format" do
54
- @query = "8775"
55
- Barometer::Query::Format::WoeID.is?(@query).should be_true
56
- end
57
-
58
- it "recognizes a valid 6 digit code format" do
59
- @query = "615702"
60
- Barometer::Query::Format::WoeID.is?(@query).should be_true
61
- end
62
-
63
- it "recognizes a valid 7 digit code format" do
64
- @query = "2459115"
65
- Barometer::Query::Format::WoeID.is?(@query).should be_true
66
- end
67
-
68
- it "recognizes a valid 5 digit code with a prepended 'w'" do
69
- @query = "w90210"
70
- Barometer::Query::Format::WoeID.is?(@query).should be_true
71
- end
72
-
73
- it "does not recognize a zip code" do
74
- @query = "90210"
75
- Barometer::Query::Format::WoeID.is?(@query).should be_false
76
- end
77
-
78
- it "recognizes non-valid format" do
79
- @query = "USGA0028"
80
- Barometer::Query::Format::WoeID.is?(@query).should be_false
81
- end
82
- end
83
-
84
- it "converts the query" do
85
- query_no_conversion = "2459115"
86
- query = Barometer::Query.new(query_no_conversion)
87
- query.q.should == query_no_conversion
88
-
89
- query_with_conversion = "w90210"
90
- query = Barometer::Query.new(query_with_conversion)
91
- query.q.should_not == query_with_conversion
92
- query.q.should == "90210"
93
- end
94
-
95
- describe "when reversing lookup" do
96
- it "requires a Barometer::Query object" do
97
- lambda { Barometer::Query::Format::WoeID.reverse }.should raise_error(ArgumentError)
98
- lambda { Barometer::Query::Format::WoeID.reverse("invalid") }.should raise_error(ArgumentError)
99
- query = Barometer::Query.new(@woe_id)
100
- query.is_a?(Barometer::Query).should be_true
101
- lambda { Barometer::Query::Format::WoeID.reverse(original_query) }.should_not raise_error(ArgumentError)
102
- end
103
-
104
- it "returns a Barometer::Query" do
105
- query = Barometer::Query.new(@woe_id)
106
- Barometer::Query::Format::WoeID.reverse(query).is_a?(Barometer::Query).should be_true
107
- end
108
-
109
- it "reverses a valid woe_id (US)" do
110
- query = Barometer::Query.new(@woe_id)
111
- new_query = Barometer::Query::Format::WoeID.reverse(query)
112
- new_query.q.should == "Paris, France"
113
- new_query.country_code.should be_nil
114
- new_query.format.should == :geocode
115
- new_query.geo.should be_nil
116
- end
117
-
118
- it "doesn't reverse an invalid weather_id" do
119
- query = Barometer::Query.new(@zipcode)
120
- Barometer::Query::Format::WoeID.reverse(query).should be_nil
121
- end
122
- end
123
-
124
- describe "when converting using 'to'," do
125
- it "requires a Barometer::Query object" do
126
- lambda { Barometer::Query::Format::WoeID.to }.should raise_error(ArgumentError)
127
- lambda { Barometer::Query::Format::WoeID.to("invalid") }.should raise_error(ArgumentError)
128
- query = Barometer::Query.new(@woe_id)
129
- query.is_a?(Barometer::Query).should be_true
130
- lambda { Barometer::Query::Format::WoeID.to(original_query) }.should_not raise_error(ArgumentError)
131
- end
132
-
133
- it "returns a Barometer::Query" do
134
- query = Barometer::Query.new(@geocode)
135
- Barometer::Query::Format::WoeID.to(query).is_a?(Barometer::Query).should be_true
136
- end
137
-
138
- it "converts from short_zipcode" do
139
- query = Barometer::Query.new(@short_zipcode)
140
- query.format.should == :short_zipcode
141
- new_query = Barometer::Query::Format::WoeID.to(query)
142
- new_query.q.should == "2363796"
143
- new_query.country_code.should == "US"
144
- new_query.format.should == :woe_id
145
- new_query.geo.should_not be_nil
146
- end
147
-
148
- it "converts from zipcode" do
149
- query = Barometer::Query.new(@zipcode)
150
- query.format = :zipcode
151
- query.format.should == :zipcode
152
- new_query = Barometer::Query::Format::WoeID.to(query)
153
- new_query.q.should == "2363796"
154
- new_query.country_code.should == "US"
155
- new_query.format.should == :woe_id
156
- new_query.geo.should_not be_nil
157
- end
158
-
159
- it "converts from postal code" do
160
- query = Barometer::Query.new(@postal_code)
161
- query.format = :postalcode
162
- query.format.should == :postalcode
163
- new_query = Barometer::Query::Format::WoeID.to(query)
164
- new_query.q.should == "8676"
165
- new_query.country_code.should == "CA"
166
- new_query.format.should == :woe_id
167
- new_query.geo.should be_nil
168
- end
169
-
170
- it "converts from coordinates" do
171
- query = Barometer::Query.new(@coordinates)
172
- query.format.should == :coordinates
173
- new_query = Barometer::Query::Format::WoeID.to(query)
174
- new_query.q.should == "12589342"
175
- new_query.country_code.should be_nil
176
- new_query.format.should == :woe_id
177
- new_query.geo.should be_nil
178
- end
179
-
180
- it "converts from geocode" do
181
- query = Barometer::Query.new(@geocode)
182
- query.format.should == :geocode
183
- new_query = Barometer::Query::Format::WoeID.to(query)
184
- new_query.q.should == "2459115"
185
- new_query.country_code.should be_nil
186
- new_query.format.should == :woe_id
187
- new_query.geo.should be_nil
188
- end
189
-
190
- it "converts from weather_id" do
191
- query = Barometer::Query.new(@weather_id)
192
- query.format.should == :weather_id
193
- new_query = Barometer::Query::Format::WoeID.to(query)
194
- new_query.q.should == "2357024"
195
- new_query.country_code.should be_nil
196
- new_query.format.should == :woe_id
197
- new_query.geo.should be_nil
198
- end
199
-
200
- it "converts from icao" do
201
- query = Barometer::Query.new(@icao)
202
- query.format.should == :icao
203
- new_query = Barometer::Query::Format::WoeID.to(query)
204
- new_query.q.should == "2487956"
205
- new_query.country_code.should == "US"
206
- new_query.format.should == :woe_id
207
- new_query.geo.should_not be_nil
208
- end
209
- end
210
- end
211
- end