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.
- data/.gitignore +2 -0
- data/.pelusa.yml +7 -0
- data/.travis.yml +6 -3
- data/Gemfile +11 -1
- data/README.md +89 -244
- data/Rakefile +1 -1
- data/barometer.gemspec +22 -24
- data/lib/barometer.rb +14 -65
- data/lib/barometer/base.rb +35 -65
- data/lib/barometer/data.rb +15 -20
- data/lib/barometer/data/attribute.rb +19 -0
- data/lib/barometer/data/attributes/distance.rb +11 -0
- data/lib/barometer/data/attributes/float.rb +11 -0
- data/lib/barometer/data/attributes/integer.rb +11 -0
- data/lib/barometer/data/attributes/location.rb +11 -0
- data/lib/barometer/data/attributes/pressure.rb +11 -0
- data/lib/barometer/data/attributes/sun.rb +15 -0
- data/lib/barometer/data/attributes/temperature.rb +11 -0
- data/lib/barometer/data/attributes/time.rb +11 -0
- data/lib/barometer/data/attributes/vector.rb +11 -0
- data/lib/barometer/data/attributes/zone.rb +11 -0
- data/lib/barometer/data/convertable_units.rb +145 -0
- data/lib/barometer/data/coordinates.rb +16 -0
- data/lib/barometer/data/distance.rb +14 -133
- data/lib/barometer/data/geo.rb +22 -59
- data/lib/barometer/data/location.rb +14 -20
- data/lib/barometer/data/pressure.rb +14 -135
- data/lib/barometer/data/sun.rb +24 -24
- data/lib/barometer/data/temperature.rb +14 -169
- data/lib/barometer/data/vector.rb +44 -0
- data/lib/barometer/data/zone.rb +109 -112
- data/lib/barometer/query.rb +23 -161
- data/lib/barometer/query/base.rb +88 -0
- data/lib/barometer/query/converter.rb +64 -0
- data/lib/barometer/query/converters/from_coordinates_to_noaa_station_id.rb +30 -0
- data/lib/barometer/query/converters/from_geocode_to_coordinates.rb +28 -0
- data/lib/barometer/query/converters/from_short_zipcode_to_zipcode.rb +28 -0
- data/lib/barometer/query/converters/from_weather_id_to_geocode.rb +30 -0
- data/lib/barometer/query/converters/from_woe_id_or_ipv4_to_geocode.rb +32 -0
- data/lib/barometer/query/converters/to_geocode.rb +30 -0
- data/lib/barometer/query/converters/to_weather_id.rb +30 -0
- data/lib/barometer/query/converters/to_woe_id.rb +30 -0
- data/lib/barometer/query/format.rb +59 -0
- data/lib/barometer/query/formats/base.rb +22 -0
- data/lib/barometer/query/formats/coordinates.rb +14 -0
- data/lib/barometer/query/formats/geocode.rb +15 -0
- data/lib/barometer/query/formats/icao.rb +35 -0
- data/lib/barometer/query/formats/ipv4_address.rb +19 -0
- data/lib/barometer/query/formats/noaa_station_id.rb +15 -0
- data/lib/barometer/query/formats/postalcode.rb +20 -0
- data/lib/barometer/query/formats/short_zipcode.rb +15 -0
- data/lib/barometer/{translations → query/formats/translations}/icao_country_codes.yml +0 -0
- data/lib/barometer/{translations → query/formats/translations}/weather_country_codes.yml +0 -0
- data/lib/barometer/query/formats/unknown.rb +14 -0
- data/lib/barometer/query/formats/weather_id.rb +33 -0
- data/lib/barometer/query/formats/woe_id.rb +28 -0
- data/lib/barometer/query/formats/zipcode.rb +15 -0
- data/lib/barometer/query/service.rb +13 -0
- data/lib/barometer/query/services/apis/geonames_timezone.rb +26 -0
- data/lib/barometer/query/services/apis/google_geocode.rb +35 -0
- data/lib/barometer/query/services/apis/noaa_station.rb +31 -0
- data/lib/barometer/query/services/apis/weather_id.rb +35 -0
- data/lib/barometer/query/services/apis/wunderground_timezone.rb +26 -0
- data/lib/barometer/query/services/apis/yahoo_placefinder.rb +35 -0
- data/lib/barometer/query/services/apis/yahoo_weather.rb +31 -0
- data/lib/barometer/query/services/from_weather_id.rb +64 -0
- data/lib/barometer/query/services/geonames_timezone.rb +18 -0
- data/lib/barometer/query/services/google_geocode.rb +106 -0
- data/lib/barometer/query/services/noaa_station_id.rb +28 -0
- data/lib/barometer/query/services/to_weather_id.rb +25 -0
- data/lib/barometer/query/services/to_woe_id.rb +29 -0
- data/lib/barometer/query/services/wunderground_timezone.rb +18 -0
- data/lib/barometer/query/services/yahoo_geocode.rb +69 -0
- data/lib/barometer/response.rb +12 -0
- data/lib/barometer/response/base.rb +57 -0
- data/lib/barometer/response/current.rb +27 -0
- data/lib/barometer/response/prediction.rb +41 -0
- data/lib/barometer/response/prediction_collection.rb +48 -0
- data/lib/barometer/utils.rb +17 -0
- data/lib/barometer/utils/address.rb +33 -0
- data/lib/barometer/utils/api.rb +30 -0
- data/lib/barometer/utils/config_reader.rb +40 -0
- data/lib/barometer/utils/get.rb +17 -0
- data/lib/barometer/utils/json_reader.rb +22 -0
- data/lib/barometer/utils/payload.rb +100 -0
- data/lib/barometer/utils/payload_request.rb +37 -0
- data/lib/barometer/utils/post.rb +24 -0
- data/lib/barometer/utils/time.rb +78 -0
- data/lib/barometer/{translations → utils/translations}/zone_codes.yml +0 -0
- data/lib/barometer/utils/versioned_registration.rb +70 -0
- data/lib/barometer/utils/xml_reader.rb +27 -0
- data/lib/barometer/utils/zone_code_lookup.rb +30 -0
- data/lib/barometer/version.rb +1 -1
- data/lib/barometer/weather.rb +44 -173
- data/lib/barometer/weather_service.rb +41 -0
- data/lib/barometer/weather_services/base.rb +50 -0
- data/lib/barometer/weather_services/forecast_io.rb +36 -0
- data/lib/barometer/weather_services/forecast_io/api.rb +22 -0
- data/lib/barometer/weather_services/forecast_io/query.rb +38 -0
- data/lib/barometer/weather_services/forecast_io/response.rb +31 -0
- data/lib/barometer/weather_services/forecast_io/response/current_weather.rb +78 -0
- data/lib/barometer/weather_services/forecast_io/response/forecasted_weather.rb +74 -0
- data/lib/barometer/weather_services/forecast_io/response/location.rb +19 -0
- data/lib/barometer/weather_services/forecast_io/response/timezone.rb +25 -0
- data/lib/barometer/weather_services/noaa.rb +21 -305
- data/lib/barometer/weather_services/noaa/current_api.rb +25 -0
- data/lib/barometer/weather_services/noaa/current_query.rb +30 -0
- data/lib/barometer/weather_services/noaa/current_response.rb +29 -0
- data/lib/barometer/weather_services/noaa/forecast_api.rb +25 -0
- data/lib/barometer/weather_services/noaa/forecast_query.rb +39 -0
- data/lib/barometer/weather_services/noaa/forecast_response.rb +28 -0
- data/lib/barometer/weather_services/noaa/response/current_location.rb +42 -0
- data/lib/barometer/weather_services/noaa/response/current_station.rb +46 -0
- data/lib/barometer/weather_services/noaa/response/current_weather.rb +82 -0
- data/lib/barometer/weather_services/noaa/response/forecasted_weather.rb +90 -0
- data/lib/barometer/weather_services/noaa/response/location.rb +19 -0
- data/lib/barometer/weather_services/noaa/response/timezone.rb +15 -0
- data/lib/barometer/weather_services/response.rb +9 -0
- data/lib/barometer/weather_services/response/location.rb +42 -0
- data/lib/barometer/weather_services/response/time_zone.rb +19 -0
- data/lib/barometer/weather_services/weather_bug.rb +24 -280
- data/lib/barometer/weather_services/weather_bug/current_api.rb +26 -0
- data/lib/barometer/weather_services/weather_bug/current_response.rb +33 -0
- data/lib/barometer/weather_services/weather_bug/forecast_api.rb +26 -0
- data/lib/barometer/weather_services/weather_bug/forecast_response.rb +29 -0
- data/lib/barometer/weather_services/weather_bug/query.rb +42 -0
- data/lib/barometer/weather_services/weather_bug/response/current_weather.rb +82 -0
- data/lib/barometer/weather_services/weather_bug/response/forecasted_weather.rb +67 -0
- data/lib/barometer/weather_services/weather_bug/response/location.rb +23 -0
- data/lib/barometer/weather_services/weather_bug/response/station.rb +43 -0
- data/lib/barometer/weather_services/weather_bug/response/sun.rb +32 -0
- data/lib/barometer/weather_services/weather_bug/response/time_helper.rb +52 -0
- data/lib/barometer/weather_services/weather_bug/response/timezone.rb +15 -0
- data/lib/barometer/weather_services/wunderground_v1.rb +32 -0
- data/lib/barometer/weather_services/wunderground_v1/current_api.rb +21 -0
- data/lib/barometer/weather_services/wunderground_v1/current_response.rb +31 -0
- data/lib/barometer/weather_services/wunderground_v1/forecast_api.rb +21 -0
- data/lib/barometer/weather_services/wunderground_v1/forecast_response.rb +33 -0
- data/lib/barometer/weather_services/wunderground_v1/query.rb +30 -0
- data/lib/barometer/weather_services/wunderground_v1/response/current_weather.rb +92 -0
- data/lib/barometer/weather_services/wunderground_v1/response/forecasted_weather.rb +87 -0
- data/lib/barometer/weather_services/wunderground_v1/response/full_timezone.rb +22 -0
- data/lib/barometer/weather_services/wunderground_v1/response/location.rb +43 -0
- data/lib/barometer/weather_services/wunderground_v1/response/station.rb +39 -0
- data/lib/barometer/weather_services/wunderground_v1/response/sun.rb +53 -0
- data/lib/barometer/weather_services/wunderground_v1/response/timezone.rb +15 -0
- data/lib/barometer/weather_services/yahoo.rb +16 -198
- data/lib/barometer/weather_services/yahoo/api.rb +21 -0
- data/lib/barometer/weather_services/yahoo/query.rb +42 -0
- data/lib/barometer/weather_services/yahoo/response.rb +39 -0
- data/lib/barometer/weather_services/yahoo/response/current_weather.rb +86 -0
- data/lib/barometer/weather_services/yahoo/response/forecasted_weather.rb +71 -0
- data/lib/barometer/weather_services/yahoo/response/location.rb +47 -0
- data/lib/barometer/weather_services/yahoo/response/sun.rb +43 -0
- data/lib/barometer/weather_services/yahoo/response/timezone.rb +15 -0
- data/spec/barometer_spec.rb +18 -120
- data/spec/base_spec.rb +114 -0
- data/spec/cassettes/Converter_FromCoordinatesToNoaaStationId.json +1 -0
- data/spec/cassettes/Converter_FromWeatherIdToGeocode.json +1 -0
- data/spec/cassettes/Converter_FromWoeIdOrIpv4ToGeocode.json +1 -0
- data/spec/cassettes/Converter_ToGeocode.json +1 -0
- data/spec/cassettes/Converter_ToWeatherId.json +1 -0
- data/spec/cassettes/Converter_ToWoeId.json +1 -0
- data/spec/cassettes/Service_FromWeatherId.json +1 -0
- data/spec/cassettes/Service_GoogleGeocode.json +1 -0
- data/spec/cassettes/Service_NoaaStation.json +1 -0
- data/spec/cassettes/Service_ToWeatherId.json +1 -0
- data/spec/cassettes/Service_ToWoeId.json +1 -0
- data/spec/cassettes/Service_YahooGeocode.json +1 -0
- data/spec/cassettes/WeatherService_ForecastIo.json +1 -0
- data/spec/cassettes/WeatherService_Noaa.json +1 -1
- data/spec/cassettes/WeatherService_WeatherBug.json +1 -1
- data/spec/cassettes/WeatherService_WundergroundV1.json +1 -0
- data/spec/cassettes/WeatherService_Yahoo.json +1 -1
- data/spec/data/attributes/distance_spec.rb +60 -0
- data/spec/data/attributes/location_spec.rb +41 -0
- data/spec/data/attributes/pressure_spec.rb +60 -0
- data/spec/data/attributes/sun_spec.rb +33 -0
- data/spec/data/attributes/temperature_spec.rb +60 -0
- data/spec/data/attributes/time_spec.rb +58 -0
- data/spec/data/attributes/vector_spec.rb +43 -0
- data/spec/data/attributes/zone_spec.rb +34 -0
- data/spec/data/convertable_units_spec.rb +299 -0
- data/spec/data/coordinates_spec.rb +15 -0
- data/spec/data/distance_spec.rb +49 -333
- data/spec/data/geo_spec.rb +72 -71
- data/spec/data/location_spec.rb +70 -65
- data/spec/data/pressure_spec.rb +49 -333
- data/spec/data/sun_spec.rb +57 -81
- data/spec/data/temperature_spec.rb +49 -393
- data/spec/data/vector_spec.rb +100 -0
- data/spec/data/zone_spec.rb +199 -266
- data/spec/query/base_spec.rb +296 -0
- data/spec/query/converter_spec.rb +98 -0
- data/spec/query/converters/from_coordinates_to_noaa_station_id_spec.rb +35 -0
- data/spec/query/converters/from_geocode_to_coordinates_spec.rb +25 -0
- data/spec/query/converters/from_short_zipcode_to_zipcode_spec.rb +31 -0
- data/spec/query/converters/from_weather_id_to_geocode_spec.rb +40 -0
- data/spec/query/converters/from_woe_id_or_ipv4_to_geocode_spec.rb +51 -0
- data/spec/query/converters/to_geocode_spec.rb +99 -0
- data/spec/query/converters/to_weather_id_spec.rb +35 -0
- data/spec/query/converters/to_woe_id_spec.rb +74 -0
- data/spec/query/formats/base_spec.rb +15 -0
- data/spec/query/formats/coordinates_spec.rb +13 -0
- data/spec/query/formats/geocode_spec.rb +9 -0
- data/spec/query/formats/icao_spec.rb +20 -0
- data/spec/query/formats/ipv4_address_spec.rb +33 -0
- data/spec/query/formats/noaa_station_id_spec.rb +9 -0
- data/spec/query/formats/postalcode_spec.rb +18 -0
- data/spec/query/formats/short_zipcode_spec.rb +18 -0
- data/spec/query/formats/unknown_spec.rb +9 -0
- data/spec/query/formats/weather_id_spec.rb +31 -0
- data/spec/query/formats/woe_id_spec.rb +45 -0
- data/spec/query/formats/zipcode_spec.rb +18 -0
- data/spec/query/formats_spec.rb +55 -0
- data/spec/query/services/from_weather_id_spec.rb +54 -0
- data/spec/query/services/google_geocode_spec.rb +60 -0
- data/spec/query/services/noaa_station_id_spec.rb +23 -0
- data/spec/query/services/to_weather_id_spec.rb +23 -0
- data/spec/query/services/to_woe_id_spec.rb +51 -0
- data/spec/query/services/yahoo_geocode_spec.rb +72 -0
- data/spec/response/base_spec.rb +103 -0
- data/spec/response/current_spec.rb +33 -0
- data/spec/response/predicition_spec.rb +65 -0
- data/spec/response/prediction_collection_spec.rb +97 -0
- data/spec/spec_helper.rb +14 -12
- data/spec/support/key_file_parser.rb +22 -0
- data/spec/support/matchers/formats.rb +36 -0
- data/spec/support/matchers/have_data.rb +46 -0
- data/spec/support/matchers/have_field.rb +128 -0
- data/spec/support/matchers/have_forecast.rb +46 -0
- data/spec/support/matchers/path.rb +23 -0
- data/spec/support/query_factory.rb +20 -0
- data/spec/utils/address_spec.rb +67 -0
- data/spec/utils/config_reader_spec.rb +157 -0
- data/spec/utils/get_spec.rb +22 -0
- data/spec/utils/payload_request_spec.rb +69 -0
- data/spec/utils/payload_spec.rb +168 -0
- data/spec/utils/post_spec.rb +20 -0
- data/spec/utils/time_spec.rb +93 -0
- data/spec/utils/versioned_registration_spec.rb +105 -0
- data/spec/weather_services/base_spec.rb +116 -0
- data/spec/weather_services/forecast_io_spec.rb +71 -0
- data/spec/weather_services/noaa/current_response_spec.rb +22 -0
- data/spec/weather_services/noaa/forecast_response_spec.rb +33 -0
- data/spec/weather_services/noaa_spec.rb +68 -166
- data/spec/weather_services/weather_bug/current_response_spec.rb +64 -0
- data/spec/weather_services/weather_bug/forecast_response_spec.rb +23 -0
- data/spec/weather_services/weather_bug_spec.rb +62 -202
- data/spec/weather_services/wunderground_v1/current_response_spec.rb +19 -0
- data/spec/weather_services/wunderground_v1/forecast_response_spec.rb +62 -0
- data/spec/weather_services/wunderground_v1_spec.rb +78 -0
- data/spec/weather_services/yahoo/response_spec.rb +73 -0
- data/spec/weather_services/yahoo_spec.rb +52 -135
- data/spec/weather_services_spec.rb +103 -0
- data/spec/weather_spec.rb +167 -347
- metadata +342 -123
- data/.document +0 -5
- data/TODO +0 -60
- data/bin/barometer +0 -441
- data/lib/barometer/data/local_datetime.rb +0 -145
- data/lib/barometer/data/local_time.rb +0 -134
- data/lib/barometer/data/speed.rb +0 -158
- data/lib/barometer/data/units.rb +0 -49
- data/lib/barometer/formats.rb +0 -13
- data/lib/barometer/formats/coordinates.rb +0 -57
- data/lib/barometer/formats/format.rb +0 -64
- data/lib/barometer/formats/geocode.rb +0 -60
- data/lib/barometer/formats/icao.rb +0 -37
- data/lib/barometer/formats/postalcode.rb +0 -22
- data/lib/barometer/formats/short_zipcode.rb +0 -17
- data/lib/barometer/formats/weather_id.rb +0 -92
- data/lib/barometer/formats/woe_id.rb +0 -150
- data/lib/barometer/formats/zipcode.rb +0 -31
- data/lib/barometer/key_file_parser.rb +0 -20
- data/lib/barometer/measurements/measurement.rb +0 -202
- data/lib/barometer/measurements/result.rb +0 -207
- data/lib/barometer/measurements/result_array.rb +0 -75
- data/lib/barometer/services.rb +0 -19
- data/lib/barometer/weather_services/service.rb +0 -189
- data/lib/barometer/weather_services/wunderground.rb +0 -264
- data/lib/barometer/web_services/geocode.rb +0 -34
- data/lib/barometer/web_services/noaa_station_id.rb +0 -53
- data/lib/barometer/web_services/placemaker.rb +0 -95
- data/lib/barometer/web_services/timezone.rb +0 -38
- data/lib/barometer/web_services/weather_id.rb +0 -50
- data/lib/barometer/web_services/web_service.rb +0 -29
- data/spec/cassettes/Barometer.json +0 -1
- data/spec/cassettes/Query.json +0 -1
- data/spec/cassettes/Query_Format_Coordinates.json +0 -1
- data/spec/cassettes/Query_Format_Geocode.json +0 -1
- data/spec/cassettes/Query_Format_WeatherID.json +0 -1
- data/spec/cassettes/Query_Format_WoeID.json +0 -1
- data/spec/cassettes/WeatherService.json +0 -1
- data/spec/cassettes/WeatherService_Wunderground.json +0 -1
- data/spec/cassettes/WebService_Geocode.json +0 -1
- data/spec/cassettes/WebService_NoaaStation.json +0 -1
- data/spec/data/local_datetime_spec.rb +0 -274
- data/spec/data/local_time_spec.rb +0 -239
- data/spec/data/speed_spec.rb +0 -374
- data/spec/data/units_spec.rb +0 -101
- data/spec/formats/coordinates_spec.rb +0 -166
- data/spec/formats/format_spec.rb +0 -74
- data/spec/formats/geocode_spec.rb +0 -163
- data/spec/formats/icao_spec.rb +0 -55
- data/spec/formats/postalcode_spec.rb +0 -53
- data/spec/formats/short_zipcode_spec.rb +0 -47
- data/spec/formats/weather_id_spec.rb +0 -182
- data/spec/formats/woe_id_spec.rb +0 -211
- data/spec/formats/zipcode_spec.rb +0 -103
- data/spec/key_file_parser_spec.rb +0 -28
- data/spec/measurements/measurement_spec.rb +0 -381
- data/spec/measurements/result_array_spec.rb +0 -150
- data/spec/measurements/result_spec.rb +0 -632
- data/spec/query_spec.rb +0 -498
- data/spec/weather_services/services_spec.rb +0 -135
- data/spec/weather_services/wunderground_spec.rb +0 -179
- data/spec/web_services/geocode_spec.rb +0 -31
- data/spec/web_services/noaa_station_id_spec.rb +0 -33
- data/spec/web_services/placemaker_spec.rb +0 -41
- data/spec/web_services/web_services_spec.rb +0 -20
@@ -1,103 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::Query::Format::Zipcode do
|
4
|
-
before(:each) do
|
5
|
-
@short_zipcode = "90210"
|
6
|
-
@zipcode = @short_zipcode
|
7
|
-
@long_zipcode = "90210-5555"
|
8
|
-
@weather_id = "USGA0028"
|
9
|
-
@postal_code = "T5B 4M9"
|
10
|
-
@coordinates = "40.756054,-73.986951"
|
11
|
-
@geocode = "New York, NY"
|
12
|
-
@icao = "KSFO"
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "and class methods" do
|
16
|
-
it "returns a format" do
|
17
|
-
Barometer::Query::Format::Zipcode.format.should == :zipcode
|
18
|
-
end
|
19
|
-
|
20
|
-
it "returns a country" do
|
21
|
-
Barometer::Query::Format::Zipcode.country_code.should == "US"
|
22
|
-
Barometer::Query::Format::Zipcode.country_code("ignored").should == "US"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "returns a regex" do
|
26
|
-
Barometer::Query::Format::Zipcode.regex.should_not be_nil
|
27
|
-
Barometer::Query::Format::Zipcode.regex.is_a?(Regexp).should be_true
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns the convertable_formats" do
|
31
|
-
Barometer::Query::Format::Zipcode.convertable_formats.should_not be_nil
|
32
|
-
Barometer::Query::Format::Zipcode.convertable_formats.is_a?(Array).should be_true
|
33
|
-
Barometer::Query::Format::Zipcode.convertable_formats.include?(:short_zipcode).should be_true
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "is?," do
|
37
|
-
before(:each) do
|
38
|
-
@valid = "90210-5555"
|
39
|
-
@invalid = "invalid"
|
40
|
-
end
|
41
|
-
|
42
|
-
it "recognizes a valid format" do
|
43
|
-
Barometer::Query::Format::Zipcode.is?(@valid).should be_true
|
44
|
-
end
|
45
|
-
|
46
|
-
it "recognizes non-valid format" do
|
47
|
-
Barometer::Query::Format::Zipcode.is?(@invalid).should be_false
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "when converting using 'to'," do
|
52
|
-
it "requires a Barometer::Query object" do
|
53
|
-
lambda { Barometer::Query::Format::Zipcode.to }.should raise_error(ArgumentError)
|
54
|
-
lambda { Barometer::Query::Format::Zipcode.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::Zipcode.to(original_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::Zipcode.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::Zipcode.to(query)
|
69
|
-
new_query.q.should == @short_zipcode
|
70
|
-
new_query.format.should == :zipcode
|
71
|
-
new_query.country_code.should == "US"
|
72
|
-
new_query.geo.should be_nil
|
73
|
-
end
|
74
|
-
|
75
|
-
it "returns nil for other formats" do
|
76
|
-
query = Barometer::Query.new(@zipcode)
|
77
|
-
query.format = :zipcode
|
78
|
-
query.format.should == :zipcode
|
79
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
80
|
-
|
81
|
-
query = Barometer::Query.new(@weather_id)
|
82
|
-
query.format.should == :weather_id
|
83
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
84
|
-
|
85
|
-
query = Barometer::Query.new(@postal_code)
|
86
|
-
query.format.should == :postalcode
|
87
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
88
|
-
|
89
|
-
query = Barometer::Query.new(@coordinates)
|
90
|
-
query.format.should == :coordinates
|
91
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
92
|
-
|
93
|
-
query = Barometer::Query.new(@geocode)
|
94
|
-
query.format.should == :geocode
|
95
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
96
|
-
|
97
|
-
query = Barometer::Query.new(@icao)
|
98
|
-
query.format.should == :icao
|
99
|
-
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::KeyFileParser do
|
4
|
-
include FakeFS::SpecHelpers
|
5
|
-
|
6
|
-
it "returns the the KEY for the given path" do
|
7
|
-
FakeFS do
|
8
|
-
FileUtils.mkdir("~")
|
9
|
-
File.open(Barometer::KEY_FILE, 'w') {|f| f << "\weather_bug:\n code: ABC123" }
|
10
|
-
Barometer::KeyFileParser.find(:weather_bug, :code).should == "ABC123"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns nil when the key does not exist" do
|
15
|
-
FakeFS do
|
16
|
-
FileUtils.mkdir("~")
|
17
|
-
File.open(Barometer::KEY_FILE, 'w') {|f| f << "\weather_bug:\n" }
|
18
|
-
Barometer::KeyFileParser.find(:weather_bug, :code).should be_nil
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "returns nil when the file does not exist" do
|
23
|
-
FakeFS do
|
24
|
-
FileUtils.mkdir("~")
|
25
|
-
Barometer::KeyFileParser.find(:weather_bug, :code).should be_nil
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,381 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::Measurement do
|
4
|
-
describe "when initialized" do
|
5
|
-
before(:each) do
|
6
|
-
@measurement = Barometer::Measurement.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "responds to source" do
|
10
|
-
@measurement.source.should be_nil
|
11
|
-
end
|
12
|
-
|
13
|
-
it "stores the source" do
|
14
|
-
source = :wunderground
|
15
|
-
measurement = Barometer::Measurement.new(source)
|
16
|
-
measurement.source.should_not be_nil
|
17
|
-
measurement.source.should == source
|
18
|
-
end
|
19
|
-
|
20
|
-
it "responds to utc_time_stamp" do
|
21
|
-
@measurement.utc_time_stamp.should be_nil
|
22
|
-
end
|
23
|
-
|
24
|
-
it "responds to current" do
|
25
|
-
@measurement.current.should be_nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it "responds to forecast (and defaults to an empty Array)" do
|
29
|
-
@measurement.forecast.should be_nil
|
30
|
-
end
|
31
|
-
|
32
|
-
it "responds to timezone" do
|
33
|
-
@measurement.timezone.should be_nil
|
34
|
-
end
|
35
|
-
|
36
|
-
it "responds to station" do
|
37
|
-
@measurement.station.should be_nil
|
38
|
-
end
|
39
|
-
|
40
|
-
it "responds to location" do
|
41
|
-
@measurement.location.should be_nil
|
42
|
-
end
|
43
|
-
|
44
|
-
it "responds to success" do
|
45
|
-
@measurement.success.should be_false
|
46
|
-
end
|
47
|
-
|
48
|
-
it "responds to current?" do
|
49
|
-
@measurement.current?.should be_true
|
50
|
-
end
|
51
|
-
|
52
|
-
it "responds to metric" do
|
53
|
-
@measurement.metric.should be_true
|
54
|
-
end
|
55
|
-
|
56
|
-
it "responds to weight" do
|
57
|
-
@measurement.weight.should == 1
|
58
|
-
end
|
59
|
-
|
60
|
-
it "responds to links" do
|
61
|
-
@measurement.links.should == {}
|
62
|
-
end
|
63
|
-
|
64
|
-
it "responds to measured_at" do
|
65
|
-
@measurement.measured_at.should be_nil
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe "when writing data" do
|
70
|
-
before(:each) do
|
71
|
-
@measurement = Barometer::Measurement.new
|
72
|
-
end
|
73
|
-
|
74
|
-
it "only accepts Symbol for source" do
|
75
|
-
invalid_data = 1
|
76
|
-
invalid_data.class.should_not == Symbol
|
77
|
-
lambda { @measurement.source = invalid_data }.should raise_error(ArgumentError)
|
78
|
-
|
79
|
-
valid_data = :valid
|
80
|
-
valid_data.class.should == Symbol
|
81
|
-
lambda { @measurement.source = valid_data }.should_not raise_error(ArgumentError)
|
82
|
-
end
|
83
|
-
|
84
|
-
it "only accepts Time for utc_time_stamp" do
|
85
|
-
invalid_data = 1
|
86
|
-
invalid_data.class.should_not == Time
|
87
|
-
lambda { @measurement.utc_time_stamp = invalid_data }.should raise_error(ArgumentError)
|
88
|
-
|
89
|
-
valid_data = Time.now.utc
|
90
|
-
valid_data.class.should == Time
|
91
|
-
lambda { @measurement.utc_time_stamp = valid_data }.should_not raise_error(ArgumentError)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "only accepts Measurement::Result for current" do
|
95
|
-
invalid_data = "invalid"
|
96
|
-
invalid_data.class.should_not == Barometer::Measurement::Result
|
97
|
-
lambda { @measurement.current = invalid_data }.should raise_error(ArgumentError)
|
98
|
-
|
99
|
-
valid_data = Barometer::Measurement::Result.new
|
100
|
-
valid_data.class.should == Barometer::Measurement::Result
|
101
|
-
lambda { @measurement.current = valid_data }.should_not raise_error(ArgumentError)
|
102
|
-
end
|
103
|
-
|
104
|
-
it "only accepts Data::ResultArray for forecast" do
|
105
|
-
invalid_data = 1
|
106
|
-
invalid_data.class.should_not == Barometer::Measurement::ResultArray
|
107
|
-
lambda { @measurement.forecast = invalid_data }.should raise_error(ArgumentError)
|
108
|
-
|
109
|
-
valid_data = Barometer::Measurement::ResultArray.new
|
110
|
-
valid_data.class.should == Barometer::Measurement::ResultArray
|
111
|
-
lambda { @measurement.forecast = valid_data }.should_not raise_error(ArgumentError)
|
112
|
-
end
|
113
|
-
|
114
|
-
it "only accepts Data::Zone for timezone" do
|
115
|
-
invalid_data = 1
|
116
|
-
invalid_data.class.should_not == Data::Zone
|
117
|
-
lambda { @measurement.timezone = invalid_data }.should raise_error(ArgumentError)
|
118
|
-
|
119
|
-
valid_data = Data::Zone.new("Europe/Paris")
|
120
|
-
valid_data.class.should == Data::Zone
|
121
|
-
lambda { @measurement.timezone = valid_data }.should_not raise_error(ArgumentError)
|
122
|
-
end
|
123
|
-
|
124
|
-
it "only accepts Data::Location for station" do
|
125
|
-
invalid_data = 1
|
126
|
-
invalid_data.class.should_not == Data::Location
|
127
|
-
lambda { @measurement.station = invalid_data }.should raise_error(ArgumentError)
|
128
|
-
|
129
|
-
valid_data = Data::Location.new
|
130
|
-
valid_data.class.should == Data::Location
|
131
|
-
lambda { @measurement.station = valid_data }.should_not raise_error(ArgumentError)
|
132
|
-
end
|
133
|
-
|
134
|
-
it "only accepts Data::Location for location" do
|
135
|
-
invalid_data = 1
|
136
|
-
invalid_data.class.should_not == Data::Location
|
137
|
-
lambda { @measurement.location = invalid_data }.should raise_error(ArgumentError)
|
138
|
-
|
139
|
-
valid_data = Data::Location.new
|
140
|
-
valid_data.class.should == Data::Location
|
141
|
-
lambda { @measurement.location = valid_data }.should_not raise_error(ArgumentError)
|
142
|
-
end
|
143
|
-
|
144
|
-
it "only accepts Fixnum for weight" do
|
145
|
-
invalid_data = "test"
|
146
|
-
invalid_data.class.should_not == Fixnum
|
147
|
-
lambda { @measurement.weight = invalid_data }.should raise_error(ArgumentError)
|
148
|
-
|
149
|
-
valid_data = 1
|
150
|
-
valid_data.class.should == Fixnum
|
151
|
-
lambda { @measurement.weight = valid_data }.should_not raise_error(ArgumentError)
|
152
|
-
end
|
153
|
-
|
154
|
-
it "only accepts Array for links" do
|
155
|
-
invalid_data = 1
|
156
|
-
invalid_data.class.should_not == Hash
|
157
|
-
lambda { @measurement.links = invalid_data }.should raise_error(ArgumentError)
|
158
|
-
|
159
|
-
valid_data = {1 => nil}
|
160
|
-
valid_data.class.should == Hash
|
161
|
-
lambda { @measurement.links = valid_data }.should_not raise_error(ArgumentError)
|
162
|
-
end
|
163
|
-
|
164
|
-
it "only accepts Data::LocalTime for measured_at" do
|
165
|
-
invalid_data = 1
|
166
|
-
invalid_data.class.should_not == Data::LocalTime
|
167
|
-
lambda { @measurement.measured_at = invalid_data }.should raise_error(ArgumentError)
|
168
|
-
|
169
|
-
valid_data = Data::LocalTime.new
|
170
|
-
valid_data.class.should == Data::LocalTime
|
171
|
-
lambda { @measurement.measured_at = valid_data }.should_not raise_error(ArgumentError)
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
describe "and the helpers" do
|
176
|
-
before(:each) do
|
177
|
-
@measurement = Barometer::Measurement.new
|
178
|
-
end
|
179
|
-
|
180
|
-
it "changes state to successful (if successful)" do
|
181
|
-
@measurement.success.should be_false
|
182
|
-
@measurement.success!
|
183
|
-
@measurement.utc_time_stamp.should be_nil
|
184
|
-
@measurement.current.should be_nil
|
185
|
-
@measurement.success.should be_false
|
186
|
-
|
187
|
-
@measurement.current = Barometer::Measurement::Result.new
|
188
|
-
@measurement.current.temperature = Data::Temperature.new
|
189
|
-
@measurement.current.temperature.c = 10
|
190
|
-
@measurement.utc_time_stamp.should_not be_nil
|
191
|
-
@measurement.success!
|
192
|
-
@measurement.success.should be_true
|
193
|
-
end
|
194
|
-
|
195
|
-
it "returns successful state" do
|
196
|
-
@measurement.current = Barometer::Measurement::Result.new
|
197
|
-
@measurement.current.temperature = Data::Temperature.new
|
198
|
-
@measurement.current.temperature.c = 10
|
199
|
-
@measurement.success!
|
200
|
-
@measurement.success.should be_true
|
201
|
-
@measurement.success?.should be_true
|
202
|
-
end
|
203
|
-
|
204
|
-
it "returns non-successful state" do
|
205
|
-
@measurement.success.should be_false
|
206
|
-
@measurement.success?.should be_false
|
207
|
-
end
|
208
|
-
|
209
|
-
it "stamps the utc_time_stamp" do
|
210
|
-
@measurement.utc_time_stamp.should be_nil
|
211
|
-
@measurement.stamp!
|
212
|
-
@measurement.utc_time_stamp.should_not be_nil
|
213
|
-
end
|
214
|
-
|
215
|
-
it "indicates if current" do
|
216
|
-
@measurement.current.should be_nil
|
217
|
-
@measurement.current?.should be_true
|
218
|
-
|
219
|
-
@measurement.current = Barometer::Measurement::Result.new
|
220
|
-
@measurement.current.current_at.should be_nil
|
221
|
-
@measurement.current?.should be_true
|
222
|
-
|
223
|
-
@measurement.current.current_at = Data::LocalTime.new(9,0,0)
|
224
|
-
@measurement.current?.should be_true
|
225
|
-
@measurement.current?("9:00 am").should be_true
|
226
|
-
end
|
227
|
-
|
228
|
-
describe "changing units" do
|
229
|
-
before(:each) do
|
230
|
-
@measurement = Barometer::Measurement.new
|
231
|
-
end
|
232
|
-
|
233
|
-
it "indicates if metric?" do
|
234
|
-
@measurement.metric.should be_true
|
235
|
-
@measurement.metric?.should be_true
|
236
|
-
@measurement.metric = false
|
237
|
-
@measurement.metric.should be_false
|
238
|
-
@measurement.metric?.should be_false
|
239
|
-
end
|
240
|
-
|
241
|
-
it "changes to imperial" do
|
242
|
-
@measurement.metric?.should be_true
|
243
|
-
@measurement.imperial!
|
244
|
-
@measurement.metric?.should be_false
|
245
|
-
end
|
246
|
-
|
247
|
-
it "changes to metric" do
|
248
|
-
@measurement.metric = false
|
249
|
-
@measurement.metric?.should be_false
|
250
|
-
@measurement.metric!
|
251
|
-
@measurement.metric?.should be_true
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
describe "when searching forecasts using 'for'" do
|
257
|
-
before(:each) do
|
258
|
-
@measurement = Barometer::Measurement.new
|
259
|
-
|
260
|
-
# create a measurement object with a result array that includes
|
261
|
-
# dates for 4 consecutive days starting with tommorrow
|
262
|
-
@measurement.forecast = Barometer::Measurement::ResultArray.new
|
263
|
-
1.upto(4) do |i|
|
264
|
-
forecast_measurement = Barometer::Measurement::Result.new
|
265
|
-
forecast_measurement.date = Date.parse((Time.now + (i * 60 * 60 * 24)).to_s)
|
266
|
-
@measurement.forecast << forecast_measurement
|
267
|
-
end
|
268
|
-
@measurement.forecast.size.should == 4
|
269
|
-
|
270
|
-
@tommorrow = (Time.now + (60 * 60 * 24))
|
271
|
-
end
|
272
|
-
|
273
|
-
it "returns nil when there are no forecasts" do
|
274
|
-
@measurement.forecast = Barometer::Measurement::ResultArray.new
|
275
|
-
@measurement.forecast.size.should == 0
|
276
|
-
@measurement.for.should be_nil
|
277
|
-
end
|
278
|
-
|
279
|
-
it "finds the date using a String" do
|
280
|
-
tommorrow = @tommorrow.to_s
|
281
|
-
tommorrow.class.should == String
|
282
|
-
@measurement.for(tommorrow).should == @measurement.forecast.first
|
283
|
-
end
|
284
|
-
|
285
|
-
it "finds the date using a Date" do
|
286
|
-
tommorrow = Date.parse(@tommorrow.to_s)
|
287
|
-
tommorrow.class.should == Date
|
288
|
-
@measurement.for(tommorrow).should == @measurement.forecast.first
|
289
|
-
end
|
290
|
-
|
291
|
-
it "finds the date using a DateTime" do
|
292
|
-
tommorrow = DateTime.parse(@tommorrow.to_s)
|
293
|
-
tommorrow.class.should == DateTime
|
294
|
-
@measurement.for(tommorrow).should == @measurement.forecast.first
|
295
|
-
end
|
296
|
-
|
297
|
-
it "finds the date using a Time" do
|
298
|
-
@tommorrow.class.should == Time
|
299
|
-
@measurement.for(@tommorrow).should == @measurement.forecast.first
|
300
|
-
end
|
301
|
-
|
302
|
-
it "fidns the date using Data::LocalDateTime" do
|
303
|
-
tommorrow = Data::LocalDateTime.parse(@tommorrow.to_s)
|
304
|
-
tommorrow.class.should == Data::LocalDateTime
|
305
|
-
@measurement.for(tommorrow).should == @measurement.forecast.first
|
306
|
-
end
|
307
|
-
|
308
|
-
it "finds nothing when there is not a match" do
|
309
|
-
yesterday = (Time.now - (60 * 60 * 24))
|
310
|
-
yesterday.class.should == Time
|
311
|
-
@measurement.for(yesterday).should be_nil
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
315
|
-
describe "when answering the simple questions," do
|
316
|
-
before(:each) do
|
317
|
-
@measurement = Barometer::Measurement.new(:wunderground)
|
318
|
-
@measurement.current = Barometer::Measurement::Result.new
|
319
|
-
@now = Data::LocalDateTime.parse("2009-05-01 2:05 pm")
|
320
|
-
end
|
321
|
-
|
322
|
-
describe "windy?" do
|
323
|
-
it "returns true if a current_measurement returns true" do
|
324
|
-
@measurement.current.stub(:windy? => true)
|
325
|
-
@measurement.windy?.should be_true
|
326
|
-
end
|
327
|
-
|
328
|
-
it "returns false if a current_measurement returns false" do
|
329
|
-
@measurement.current.stub(:windy? => false)
|
330
|
-
@measurement.windy?.should be_false
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
describe "wet?" do
|
335
|
-
it "returns true if the current_measurement returns true" do
|
336
|
-
@measurement.current.stub(:wet? => true)
|
337
|
-
@measurement.wet?.should be_true
|
338
|
-
end
|
339
|
-
|
340
|
-
it "returns false if the current_measurement returns false" do
|
341
|
-
@measurement.current.stub(:wet? => false)
|
342
|
-
@measurement.wet?.should be_false
|
343
|
-
end
|
344
|
-
end
|
345
|
-
|
346
|
-
describe "day?" do
|
347
|
-
it "returns true if the current_measurement returns true" do
|
348
|
-
@measurement.current.stub(:day? => true)
|
349
|
-
@measurement.day?.should be_true
|
350
|
-
end
|
351
|
-
|
352
|
-
it "returns false if the current_measurement returns false" do
|
353
|
-
@measurement.current.stub(:day? => false)
|
354
|
-
@measurement.day?.should be_false
|
355
|
-
end
|
356
|
-
end
|
357
|
-
|
358
|
-
describe "sunny?" do
|
359
|
-
it "returns true if the current_measurement returns true and day" do
|
360
|
-
@measurement.current.stub(:day? => true)
|
361
|
-
@measurement.current.stub(:sunny? => true)
|
362
|
-
@measurement.day?.should be_true
|
363
|
-
@measurement.sunny?.should be_true
|
364
|
-
end
|
365
|
-
|
366
|
-
it "returns false if the current_measurement returns false and day" do
|
367
|
-
@measurement.current.stub(:day? => true)
|
368
|
-
@measurement.current.stub(:sunny? => false)
|
369
|
-
@measurement.day?.should be_true
|
370
|
-
@measurement.sunny?.should be_false
|
371
|
-
end
|
372
|
-
|
373
|
-
it "returns false if night time" do
|
374
|
-
@measurement.current.stub(:day? => false)
|
375
|
-
@measurement.current.stub(:sunny? => true)
|
376
|
-
@measurement.day?.should be_false
|
377
|
-
@measurement.sunny?.should be_false
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|