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,101 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Units" do
4
-
5
- describe "when initialized" do
6
-
7
- before(:each) do
8
- @units = Data::Units.new
9
- end
10
-
11
- it "responds to metric, defaults to true" do
12
- @units.metric.should be_true
13
- end
14
-
15
- it "allows metric to be set" do
16
- @units.metric.should be_true
17
-
18
- @units2 = Data::Units.new(false)
19
- @units2.metric.should be_false
20
- end
21
-
22
- it "stubs metric_default" do
23
- lambda { @units.metric_default = 5 }.should raise_error(NotImplementedError)
24
- end
25
-
26
- it "stubs imperial_default" do
27
- lambda { @units.imperial_default = 5 }.should raise_error(NotImplementedError)
28
- end
29
-
30
- end
31
-
32
- describe "changing units" do
33
-
34
- before(:each) do
35
- @units = Data::Units.new
36
- end
37
-
38
- it "indicates if metric?" do
39
- @units.metric.should be_true
40
- @units.metric?.should be_true
41
- @units.metric = false
42
- @units.metric.should be_false
43
- @units.metric?.should be_false
44
- end
45
-
46
- it "changes to imperial" do
47
- @units.metric?.should be_true
48
- @units.imperial!
49
- @units.metric?.should be_false
50
- end
51
-
52
- it "changes to metric" do
53
- @units.metric = false
54
- @units.metric?.should be_false
55
- @units.metric!
56
- @units.metric?.should be_true
57
- end
58
-
59
- end
60
-
61
- describe "when assigning values" do
62
-
63
- before(:each) do
64
- module Barometer
65
- class Data::Units
66
- attr_accessor :a, :b
67
- def metric_default=(value)
68
- self.a = value
69
- end
70
- def imperial_default=(value)
71
- self.b = value
72
- end
73
- end
74
- end
75
- @units_metric = Data::Units.new(true)
76
- @units_imperial = Data::Units.new(false)
77
- @test_value_a = 5.5
78
- @test_value_b = 9.9
79
- end
80
-
81
- it "assigns metric_default" do
82
- @units_metric.metric?.should be_true
83
- @units_metric << @test_value_a
84
- @units_metric.a.should == @test_value_a
85
-
86
- @units_metric << [@test_value_b, @test_value_a]
87
- @units_metric.a.should == @test_value_b
88
- end
89
-
90
- it "assigns imperial_default" do
91
- @units_imperial.metric?.should be_false
92
- @units_imperial << @test_value_a
93
- @units_imperial.b.should == @test_value_a
94
-
95
- @units_imperial << [@test_value_a, @test_value_b]
96
- @units_imperial.b.should == @test_value_b
97
- end
98
-
99
- end
100
-
101
- end
@@ -1,166 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::Coordinates, :vcr => {
4
- :cassette_name => "Query::Format::Coordinates"
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
- it "returns a format" do
19
- Barometer::Query::Format::Coordinates.format.should == :coordinates
20
- end
21
-
22
- it "returns a country" do
23
- Barometer::Query::Format::Coordinates.country_code.should be_nil
24
- end
25
-
26
- it "returns a regex" do
27
- Barometer::Query::Format::Coordinates.regex.should_not be_nil
28
- Barometer::Query::Format::Coordinates.regex.is_a?(Regexp).should be_true
29
- end
30
-
31
- it "returns the convertable_formats" do
32
- Barometer::Query::Format::Coordinates.convertable_formats.should_not be_nil
33
- Barometer::Query::Format::Coordinates.convertable_formats.is_a?(Array).should be_true
34
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:short_zipcode).should be_true
35
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:zipcode).should be_true
36
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:postalcode).should be_true
37
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:weather_id).should be_true
38
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:coordinates).should be_true
39
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:icao).should be_true
40
- Barometer::Query::Format::Coordinates.convertable_formats.include?(:geocode).should be_true
41
- end
42
-
43
- describe "is?," do
44
- before(:each) do
45
- @valid = "40.756054,-73.986951"
46
- @invalid = "invalid"
47
- end
48
-
49
- it "recognizes a valid format" do
50
- Barometer::Query::Format::Coordinates.is?(@valid).should be_true
51
- end
52
-
53
- it "recognizes non-valid format" do
54
- Barometer::Query::Format::Coordinates.is?(@invalid).should be_false
55
- end
56
- end
57
-
58
- describe "when converting using 'to'," do
59
- it "requires a Query::Format object" do
60
- lambda { Barometer::Query::Format::Coordinates.to }.should raise_error(ArgumentError)
61
- lambda { Barometer::Query::Format::Coordinates.to("invalid") }.should raise_error(ArgumentError)
62
- query = Barometer::Query.new(@zipcode)
63
- query.is_a?(Barometer::Query).should be_true
64
- lambda { Barometer::Query::Format::Coordinates.to(original_query) }.should_not raise_error(ArgumentError)
65
- end
66
-
67
- it "returns a Barometer::Query" do
68
- query = Barometer::Query.new(@short_zipcode)
69
- Barometer::Query::Format::Coordinates.to(query).is_a?(Barometer::Query).should be_true
70
- end
71
-
72
- it "converts from short_zipcode" do
73
- query = Barometer::Query.new(@short_zipcode)
74
- query.format.should == :short_zipcode
75
- new_query = Barometer::Query::Format::Coordinates.to(query)
76
- new_query.q.should == "34.1030032,-118.4104684"
77
- new_query.country_code.should == "US"
78
- new_query.format.should == :coordinates
79
- new_query.geo.should_not be_nil
80
- end
81
-
82
- it "converts from zipcode" do
83
- query = Barometer::Query.new(@zipcode)
84
- query.format = :zipcode
85
- query.format.should == :zipcode
86
- new_query = Barometer::Query::Format::Coordinates.to(query)
87
- new_query.q.should == "34.1030032,-118.4104684"
88
- new_query.country_code.should == "US"
89
- new_query.format.should == :coordinates
90
- new_query.geo.should_not be_nil
91
- end
92
-
93
- it "converts from weather_id" do
94
- query = Barometer::Query.new(@weather_id)
95
- query.format.should == :weather_id
96
- new_query = Barometer::Query::Format::Coordinates.to(query)
97
- new_query.q.should == "33.7489954,-84.3879824"
98
- new_query.country_code.should == "US"
99
- new_query.format.should == :coordinates
100
- new_query.geo.should_not be_nil
101
- end
102
-
103
- it "converts from geocode" do
104
- query = Barometer::Query.new(@geocode)
105
- query.format.should == :geocode
106
- new_query = Barometer::Query::Format::Coordinates.to(query)
107
-
108
- new_query_coords = new_query.q.split(',').map{|c| c.to_f}
109
- new_query_coords[0].should be_within(0.00001).of(40.7143528)
110
- new_query_coords[1].should be_within(0.00001).of(-74.0059731)
111
-
112
- new_query.country_code.should == "US"
113
- new_query.format.should == :coordinates
114
- new_query.geo.should_not be_nil
115
- end
116
-
117
- it "converts from postal_code" do
118
- query = Barometer::Query.new(@postal_code)
119
- query.format.should == :postalcode
120
- new_query = Barometer::Query::Format::Coordinates.to(query)
121
- new_query.q.should == "53.5721719,-113.4551835"
122
- new_query.country_code.should == "CA"
123
- new_query.format.should == :coordinates
124
- new_query.geo.should_not be_nil
125
- end
126
-
127
- it "converts from icao" do
128
- query = Barometer::Query.new(@icao)
129
- query.format.should == :icao
130
- new_query = Barometer::Query::Format::Coordinates.to(query)
131
- new_query.q.should == "37.615223,-122.389979"
132
- new_query.country_code.should == "US"
133
- new_query.format.should == :coordinates
134
- new_query.geo.should_not be_nil
135
- end
136
-
137
- it "returns nil for other formats" do
138
- query = Barometer::Query.new(@coordinates)
139
- query.format.should == :coordinates
140
- new_query = Barometer::Query::Format::Coordinates.to(query)
141
-
142
- new_query_coords = new_query.q.split(',').map{|c| c.to_f}
143
- new_query_coords[0].should be_within(0.00001).of(40.7560413)
144
- new_query_coords[1].should be_within(0.00001).of(-73.9869192)
145
-
146
- new_query.country_code.should == "US"
147
- new_query.format.should == :coordinates
148
- new_query.geo.should_not be_nil
149
- end
150
- end
151
-
152
- describe "parsing" do
153
- it "returns the latitude" do
154
- Barometer::Query::Format::Coordinates.parse_latitude(@coordinates).should == "40.756054"
155
- end
156
-
157
- it "returns the longitude" do
158
- Barometer::Query::Format::Coordinates.parse_longitude(@coordinates).should == "-73.986951"
159
- end
160
-
161
- it "returns nil when unknown" do
162
- Barometer::Query::Format::Coordinates.parse_longitude(@short_zipcode).should be_nil
163
- end
164
- end
165
- end
166
- end
@@ -1,74 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format do
4
- describe "and class methods" do
5
- describe "is?," do
6
- it "requires a String" do
7
- invalid = 1
8
- lambda { Barometer::Query::Format.is?(invalid) }.should raise_error(ArgumentError)
9
-
10
- valid = "string"
11
- valid.is_a?(String).should be_true
12
- lambda { Barometer::Query::Format.is?(valid) }.should_not raise_error(ArgumentError)
13
- end
14
-
15
- it "calls a stubbed undefined method" do
16
- lambda { Barometer::Query::Format.is?("valid") }.should raise_error(NotImplementedError)
17
- end
18
- end
19
-
20
- describe "converts?," do
21
- it "requires a Query object" do
22
- invalid = 1
23
- Barometer::Query::Format.converts?(invalid).should be_false
24
-
25
- valid = Barometer::Query.new
26
- valid.is_a?(Barometer::Query).should be_true
27
- lambda { Barometer::Query::Format.converts?(valid) }.should_not raise_error(ArgumentError)
28
- end
29
-
30
- it "returns false" do
31
- valid = Barometer::Query.new
32
- Barometer::Query::Format.converts?(valid).should be_false
33
- end
34
- end
35
-
36
- it "detects a Query object" do
37
- invalid = 1
38
- Barometer::Query::Format.is_a_query?.should be_false
39
- Barometer::Query::Format.is_a_query?(invalid).should be_false
40
- valid = Barometer::Query.new
41
- valid.is_a?(Barometer::Query).should be_true
42
- Barometer::Query::Format.is_a_query?(valid).should be_true
43
- end
44
-
45
- it "stubs regex" do
46
- lambda { Barometer::Query::Format.regex }.should raise_error(NotImplementedError)
47
- end
48
-
49
- it "stubs format" do
50
- lambda { Barometer::Query::Format.format }.should raise_error(NotImplementedError)
51
- end
52
-
53
- it "stubs to" do
54
- Barometer::Query::Format.to.should be_nil
55
- end
56
-
57
- it "stubs country_code" do
58
- Barometer::Query::Format.country_code.should be_nil
59
- end
60
-
61
- it "stubs convertable_formats" do
62
- Barometer::Query::Format.convertable_formats.should == []
63
- end
64
-
65
- it "stubs convert_query" do
66
- Barometer::Query::Format.respond_to?(:convert_query).should be_true
67
- end
68
-
69
- it "normally does nothing when converting a query" do
70
- text = "this is a query"
71
- Barometer::Query::Format.convert_query(text).should == text
72
- end
73
- end
74
- end
@@ -1,163 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Barometer::Query::Format::Geocode, :vcr => {
4
- :cassette_name => "Query::Format::Geocode"
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
- it "returns a format" do
19
- Barometer::Query::Format::Geocode.format.should == :geocode
20
- end
21
-
22
- it "returns a country" do
23
- Barometer::Query::Format::Geocode.country_code.should be_nil
24
- end
25
-
26
- it "returns the convertable_formats" do
27
- Barometer::Query::Format::Geocode.convertable_formats.should_not be_nil
28
- Barometer::Query::Format::Geocode.convertable_formats.is_a?(Array).should be_true
29
- Barometer::Query::Format::Geocode.convertable_formats.include?(:short_zipcode).should be_true
30
- Barometer::Query::Format::Geocode.convertable_formats.include?(:zipcode).should be_true
31
- Barometer::Query::Format::Geocode.convertable_formats.include?(:coordinates).should be_true
32
- Barometer::Query::Format::Geocode.convertable_formats.include?(:weather_id).should be_true
33
- Barometer::Query::Format::Geocode.convertable_formats.include?(:icao).should be_true
34
- end
35
-
36
- describe "is?," do
37
- before(:each) do
38
- @valid = "New York, NY"
39
- end
40
-
41
- it "recognizes a valid format" do
42
- Barometer::Query::Format::Geocode.is?(@valid).should be_true
43
- Barometer::Query::Format::Geocode.is?.should be_false
44
- end
45
- end
46
-
47
- describe "when converting using 'to'," do
48
- before(:each) do
49
- Barometer.force_geocode = false
50
- end
51
-
52
- it "requires a Barometer::Query object" do
53
- lambda { Barometer::Query::Format::Geocode.to }.should raise_error(ArgumentError)
54
- lambda { Barometer::Query::Format::Geocode.to("invalid") }.should raise_error(ArgumentError)
55
- query = Barometer::Query.new(@zipcode)
56
- query.is_a?(Barometer::Query).should be_true
57
- lambda { Barometer::Query::Format::Geocode.to(query) }.should_not raise_error(ArgumentError)
58
- end
59
-
60
- it "returns a Barometer::Query" do
61
- query = Barometer::Query.new(@short_zipcode)
62
- Barometer::Query::Format::Geocode.to(query).is_a?(Barometer::Query).should be_true
63
- end
64
-
65
- it "converts from short_zipcode" do
66
- query = Barometer::Query.new(@short_zipcode)
67
- query.format.should == :short_zipcode
68
- new_query = Barometer::Query::Format::Geocode.to(query)
69
- new_query.q.should == "Beverly Hills, CA, United States"
70
- new_query.country_code.should == "US"
71
- new_query.format.should == :geocode
72
- new_query.geo.should_not be_nil
73
- end
74
-
75
- it "converts from zipcode" do
76
- query = Barometer::Query.new(@zipcode)
77
- query.format = :zipcode
78
- query.format.should == :zipcode
79
- new_query = Barometer::Query::Format::Geocode.to(query)
80
- new_query.q.should == "Beverly Hills, CA, United States"
81
- new_query.country_code.should == "US"
82
- new_query.format.should == :geocode
83
- new_query.geo.should_not be_nil
84
- end
85
-
86
- it "converts from weather_id" do
87
- query = Barometer::Query.new(@weather_id)
88
- query.format.should == :weather_id
89
- new_query = Barometer::Query::Format::Geocode.to(query)
90
- new_query.q.should == "Atlanta, GA, US"
91
- new_query.country_code.should be_nil
92
- new_query.format.should == :geocode
93
- new_query.geo.should be_nil
94
- end
95
-
96
- it "converts from coordinates" do
97
- query = Barometer::Query.new(@coordinates)
98
- query.format.should == :coordinates
99
- new_query = Barometer::Query::Format::Geocode.to(query)
100
- new_query.q.should == "Manhattan, NY, United States"
101
- new_query.country_code.should == "US"
102
- new_query.format.should == :geocode
103
- new_query.geo.should_not be_nil
104
- end
105
-
106
- it "converts from icao" do
107
- query = Barometer::Query.new(@icao)
108
- query.format.should == :icao
109
- new_query = Barometer::Query::Format::Geocode.to(query)
110
- new_query.q.should == "San Francisco, CA, United States"
111
- new_query.country_code.should == "US"
112
- new_query.format.should == :geocode
113
- new_query.geo.should_not be_nil
114
- end
115
-
116
- it "does not convert postalcode" do
117
- query = Barometer::Query.new(@postal_code)
118
- query.format.should == :postalcode
119
- new_query = Barometer::Query::Format::Geocode.to(query)
120
- new_query.should be_nil
121
- end
122
-
123
- it "leaves geocode untouched" do
124
- query = Barometer::Query.new(@geocode)
125
- query.format.should == :geocode
126
- new_query = Barometer::Query::Format::Geocode.to(query)
127
- new_query.q.should == "New York, NY"
128
- new_query.country_code.should be_nil
129
- new_query.format.should == :geocode
130
- new_query.geo.should be_nil
131
- end
132
- end
133
-
134
- describe "when geocoding" do
135
- it "requires a Barometer::Query object" do
136
- lambda { Barometer::Query::Format::Geocode.geocode }.should raise_error(ArgumentError)
137
- lambda { Barometer::Query::Format::Geocode.geocode("invalid") }.should raise_error(ArgumentError)
138
- query = Barometer::Query.new(@zipcode)
139
- query.is_a?(Barometer::Query).should be_true
140
- lambda { Barometer::Query::Format::Geocode.geocode(original_query) }.should_not raise_error(ArgumentError)
141
- end
142
-
143
- it "returns a Barometer::Query" do
144
- query = Barometer::Query.new(@short_zipcode)
145
- Barometer::Query::Format::Geocode.geocode(query).is_a?(Barometer::Query).should be_true
146
- end
147
-
148
- it "converts from short_zipcode" do
149
- query = Barometer::Query.new(@short_zipcode)
150
- query.format.should == :short_zipcode
151
- new_query = Barometer::Query::Format::Geocode.geocode(query)
152
- new_query.q.should == "Beverly Hills, CA, United States"
153
- new_query.country_code.should == "US"
154
- new_query.format.should == :geocode
155
- new_query.geo.should_not be_nil
156
- end
157
- end
158
-
159
- it "doesn't define a regex" do
160
- lambda { Barometer::Query::Format::Geocode.regex }.should raise_error(NotImplementedError)
161
- end
162
- end
163
- end