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,135 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::WeatherService, :vcr => {
|
4
|
-
:cassette_name => "WeatherService"
|
5
|
-
} do
|
6
|
-
before(:each) do
|
7
|
-
query_term = "Calgary,AB"
|
8
|
-
@query = Barometer::Query.new(query_term)
|
9
|
-
@service = Barometer::WeatherService.source(:wunderground)
|
10
|
-
@time = Time.now
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "and the class method" do
|
14
|
-
describe "source" do
|
15
|
-
it "responds" do
|
16
|
-
Barometer::WeatherService.respond_to?("source").should be_true
|
17
|
-
end
|
18
|
-
|
19
|
-
it "requires a Symbol or String" do
|
20
|
-
lambda { Barometer::WeatherService.source }.should raise_error(ArgumentError)
|
21
|
-
lambda { Barometer::WeatherService.source(1) }.should raise_error(ArgumentError)
|
22
|
-
|
23
|
-
lambda { Barometer::WeatherService.source("wunderground") }.should_not raise_error(ArgumentError)
|
24
|
-
lambda { Barometer::WeatherService.source(:wunderground) }.should_not raise_error(ArgumentError)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "raises an error if source doesn't exist" do
|
28
|
-
lambda { Barometer::WeatherService.source(:not_valid) }.should raise_error(ArgumentError)
|
29
|
-
lambda { Barometer::WeatherService.source(:wunderground) }.should_not raise_error(ArgumentError)
|
30
|
-
end
|
31
|
-
|
32
|
-
it "returns the corresponding Service object" do
|
33
|
-
Barometer::WeatherService.source(:wunderground).should == Barometer::WeatherService::Wunderground
|
34
|
-
Barometer::WeatherService.source(:wunderground).superclass.should == Barometer::WeatherService
|
35
|
-
end
|
36
|
-
|
37
|
-
it "raises an error when retrieving the wrong class" do
|
38
|
-
lambda { Barometer::WeatherService.source(:temperature) }.should raise_error(ArgumentError)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "when initialized" do
|
44
|
-
before(:each) do
|
45
|
-
@service = Barometer::WeatherService.new
|
46
|
-
@measurement = Barometer::Measurement.new
|
47
|
-
@query = Barometer::Query.new("test")
|
48
|
-
end
|
49
|
-
|
50
|
-
it "defaults _meets_requirements?" do
|
51
|
-
Barometer::WeatherService.send("_meets_requirements?").should be_true
|
52
|
-
end
|
53
|
-
|
54
|
-
it "stubs _source_name" do
|
55
|
-
lambda { Barometer::WeatherService.send("_source_name") }.should raise_error(NotImplementedError)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "stubs _accepted_formats" do
|
59
|
-
lambda { Barometer::WeatherService.send("_accepted_formats") }.should raise_error(NotImplementedError)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "stubs _measure" do
|
63
|
-
Barometer::WeatherService._measure(@measurement,@query,true).is_a?(Barometer::Measurement).should be_true
|
64
|
-
end
|
65
|
-
|
66
|
-
it "stubs _build_extra" do
|
67
|
-
Barometer::WeatherService._build_extra.should be_nil
|
68
|
-
end
|
69
|
-
|
70
|
-
it "stubs _fetch" do
|
71
|
-
Barometer::WeatherService._fetch.should be_nil
|
72
|
-
end
|
73
|
-
|
74
|
-
it "stubs _build_current" do
|
75
|
-
Barometer::WeatherService._build_current.should be_nil
|
76
|
-
end
|
77
|
-
|
78
|
-
it "stubs _build_forecast" do
|
79
|
-
Barometer::WeatherService._build_forecast.should be_nil
|
80
|
-
end
|
81
|
-
|
82
|
-
it "stubs _build_location" do
|
83
|
-
Barometer::WeatherService._build_location.should be_nil
|
84
|
-
end
|
85
|
-
|
86
|
-
it "stubs _build_sun" do
|
87
|
-
Barometer::WeatherService._build_sun.should be_nil
|
88
|
-
end
|
89
|
-
|
90
|
-
it "stubs _build_links" do
|
91
|
-
Barometer::WeatherService._build_links.should == {}
|
92
|
-
end
|
93
|
-
|
94
|
-
it "defaults _supports_country?" do
|
95
|
-
Barometer::WeatherService._supports_country?.should be_true
|
96
|
-
end
|
97
|
-
|
98
|
-
it "defaults _requires_keys?" do
|
99
|
-
Barometer::WeatherService._requires_keys?.should be_false
|
100
|
-
end
|
101
|
-
|
102
|
-
it "defaults _has_keys?" do
|
103
|
-
lambda { Barometer::WeatherService._has_keys? }.should raise_error(NotImplementedError)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "when measuring," do
|
108
|
-
it "responds to measure" do
|
109
|
-
Barometer::WeatherService.respond_to?("measure").should be_true
|
110
|
-
end
|
111
|
-
|
112
|
-
# since Barometer::WeatherService defines the measure method, you could actually just
|
113
|
-
# call Barometer::WeatherService.measure ... but this will not invoke a specific
|
114
|
-
# weather API driver. Make sure this usage raises an error.
|
115
|
-
it "requires an actuall driver" do
|
116
|
-
lambda { Barometer::WeatherService.measure(@query) }.should raise_error(NotImplementedError)
|
117
|
-
end
|
118
|
-
|
119
|
-
it "requires a Barometer::Query object" do
|
120
|
-
lambda { Barometer::WeatherService.measure("invalid") }.should raise_error(ArgumentError)
|
121
|
-
@query.is_a?(Barometer::Query).should be_true
|
122
|
-
lambda { Barometer::WeatherService.measure(@query) }.should_not raise_error(ArgumentError)
|
123
|
-
end
|
124
|
-
|
125
|
-
it "returns a Barometer::Measurement object" do
|
126
|
-
@service.measure(@query).is_a?(Barometer::Measurement).should be_true
|
127
|
-
end
|
128
|
-
|
129
|
-
it "returns current and future" do
|
130
|
-
measurement = @service.measure(@query)
|
131
|
-
measurement.current.is_a?(Barometer::Measurement::Result).should be_true
|
132
|
-
measurement.forecast.is_a?(Array).should be_true
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
@@ -1,179 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
include Barometer
|
3
|
-
|
4
|
-
describe Barometer::WeatherService::Wunderground, :vcr => {
|
5
|
-
:cassette_name => "WeatherService::Wunderground"
|
6
|
-
} do
|
7
|
-
before(:each) do
|
8
|
-
@accepted_formats = [:zipcode, :postalcode, :icao, :coordinates, :geocode]
|
9
|
-
@base_uri = "http://api.wunderground.com/auto/wui/geo"
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "the class methods" do
|
13
|
-
it "defines accepted_formats" do
|
14
|
-
WeatherService::Wunderground._accepted_formats.should == @accepted_formats
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defines source_name" do
|
18
|
-
WeatherService::Wunderground._source_name.should == :wunderground
|
19
|
-
end
|
20
|
-
|
21
|
-
it "defines fetch_current" do
|
22
|
-
WeatherService::Wunderground.respond_to?("_fetch_current").should be_true
|
23
|
-
end
|
24
|
-
|
25
|
-
it "defines fetch_forecast" do
|
26
|
-
WeatherService::Wunderground.respond_to?("_fetch_forecast").should be_true
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "building the current data" do
|
31
|
-
it "defines the build method" do
|
32
|
-
WeatherService::Wunderground.respond_to?("_build_current").should be_true
|
33
|
-
end
|
34
|
-
|
35
|
-
it "requires Hash input" do
|
36
|
-
lambda { WeatherService::Wunderground._build_current }.should raise_error(ArgumentError)
|
37
|
-
WeatherService::Wunderground._build_current({})
|
38
|
-
lambda { WeatherService::Wunderground._build_current({}) }.should_not raise_error(ArgumentError)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "returns Barometer::CurrentMeasurement object" do
|
42
|
-
current = WeatherService::Wunderground._build_current({})
|
43
|
-
current.is_a?(Measurement::Result).should be_true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "building the forecast data" do
|
48
|
-
it "defines the build method" do
|
49
|
-
WeatherService::Wunderground.respond_to?("_build_forecast").should be_true
|
50
|
-
end
|
51
|
-
|
52
|
-
it "requires Hash input" do
|
53
|
-
lambda { WeatherService::Wunderground._build_forecast }.should raise_error(ArgumentError)
|
54
|
-
lambda { WeatherService::Wunderground._build_forecast({}) }.should_not raise_error(ArgumentError)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns Array object" do
|
58
|
-
current = WeatherService::Wunderground._build_forecast({})
|
59
|
-
current.is_a?(Array).should be_true
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe "building the station data" do
|
64
|
-
it "defines the build method" do
|
65
|
-
WeatherService::Wunderground.respond_to?("_build_station").should be_true
|
66
|
-
end
|
67
|
-
|
68
|
-
it "requires Hash input" do
|
69
|
-
lambda { WeatherService::Wunderground._build_station }.should raise_error(ArgumentError)
|
70
|
-
lambda { WeatherService::Wunderground._build_station({}) }.should_not raise_error(ArgumentError)
|
71
|
-
end
|
72
|
-
|
73
|
-
it "returns Barometer::Location object" do
|
74
|
-
station = WeatherService::Wunderground._build_station({})
|
75
|
-
station.is_a?(Data::Location).should be_true
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe "building the location data" do
|
80
|
-
it "defines the build method" do
|
81
|
-
WeatherService::Wunderground.respond_to?("_build_location").should be_true
|
82
|
-
end
|
83
|
-
|
84
|
-
it "requires Hash input" do
|
85
|
-
lambda { WeatherService::Wunderground._build_location }.should raise_error(ArgumentError)
|
86
|
-
lambda { WeatherService::Wunderground._build_location({}) }.should_not raise_error(ArgumentError)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "returns Barometer::Location object" do
|
90
|
-
location = WeatherService::Wunderground._build_location({})
|
91
|
-
location.is_a?(Data::Location).should be_true
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
describe "building the timezone" do
|
96
|
-
it "defines the build method" do
|
97
|
-
WeatherService::Wunderground.respond_to?("_parse_full_timezone").should be_true
|
98
|
-
end
|
99
|
-
|
100
|
-
it "requires Hash input" do
|
101
|
-
lambda { WeatherService::Wunderground._parse_full_timezone }.should raise_error(ArgumentError)
|
102
|
-
lambda { WeatherService::Wunderground._parse_full_timezone({}) }.should_not raise_error(ArgumentError)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe "building the sun data" do
|
107
|
-
it "defines the build method" do
|
108
|
-
WeatherService::Wunderground.respond_to?("_build_sun").should be_true
|
109
|
-
end
|
110
|
-
|
111
|
-
it "requires Hash input" do
|
112
|
-
lambda { WeatherService::Wunderground._build_sun }.should raise_error(ArgumentError)
|
113
|
-
lambda { WeatherService::Wunderground._build_sun({}) }.should_not raise_error(ArgumentError)
|
114
|
-
end
|
115
|
-
|
116
|
-
it "requires Barometer::Zone input" do
|
117
|
-
lambda { WeatherService::Wunderground._build_sun({}, "invalid") }.should raise_error(ArgumentError)
|
118
|
-
lambda { WeatherService::Wunderground._build_sun({}) }.should_not raise_error(ArgumentError)
|
119
|
-
end
|
120
|
-
|
121
|
-
it "returns Barometer::Sun object" do
|
122
|
-
sun = WeatherService::Wunderground._build_sun({})
|
123
|
-
sun.is_a?(Data::Sun).should be_true
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
describe "when measuring" do
|
128
|
-
before(:each) do
|
129
|
-
@query = Barometer::Query.new("Calgary,AB")
|
130
|
-
@measurement = Barometer::Measurement.new
|
131
|
-
end
|
132
|
-
|
133
|
-
describe "all" do
|
134
|
-
it "responds to _measure" do
|
135
|
-
WeatherService::Wunderground.respond_to?("_measure").should be_true
|
136
|
-
end
|
137
|
-
|
138
|
-
it "requires a Barometer::Measurement object" do
|
139
|
-
lambda { WeatherService::Wunderground._measure(nil, @query) }.should raise_error(ArgumentError)
|
140
|
-
lambda { WeatherService::Wunderground._measure("invlaid", @query) }.should raise_error(ArgumentError)
|
141
|
-
|
142
|
-
lambda { WeatherService::Wunderground._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
143
|
-
end
|
144
|
-
|
145
|
-
it "requires a Barometer::Query query" do
|
146
|
-
lambda { WeatherService::Wunderground._measure }.should raise_error(ArgumentError)
|
147
|
-
lambda { WeatherService::Wunderground._measure(@measurement, 1) }.should raise_error(ArgumentError)
|
148
|
-
|
149
|
-
lambda { WeatherService::Wunderground._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
150
|
-
end
|
151
|
-
|
152
|
-
it "returns a Barometer::Measurement object" do
|
153
|
-
result = WeatherService::Wunderground._measure(@measurement, @query)
|
154
|
-
result.is_a?(Barometer::Measurement).should be_true
|
155
|
-
result.current.is_a?(Measurement::Result).should be_true
|
156
|
-
result.forecast.is_a?(Array).should be_true
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
describe "overall data correctness" do
|
162
|
-
before(:each) do
|
163
|
-
@query = Barometer::Query.new("Calgary,AB")
|
164
|
-
@measurement = Barometer::Measurement.new
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should correctly build the data" do
|
168
|
-
result = WeatherService::Wunderground._measure(@measurement, @query)
|
169
|
-
|
170
|
-
# build timezone
|
171
|
-
@measurement.timezone.zone_full.should == "America/Edmonton"
|
172
|
-
@measurement.timezone.current.should == "America/Edmonton"
|
173
|
-
|
174
|
-
# build current
|
175
|
-
@measurement.current.sun.rise.to_s.should match(/^\d{1,2}:\d{1,2}[ ]?[apmAPM]{0,2}$/i)
|
176
|
-
@measurement.current.sun.set.to_s.should match(/^\d{1,2}:\d{1,2}[ ]?[apmAPM]{0,2}$/i)
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::WebService::Geocode, :vcr => {
|
4
|
-
:cassette_name => "WebService::Geocode"
|
5
|
-
} do
|
6
|
-
before(:each) do
|
7
|
-
@zipcode = "90210"
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "and the class methods" do
|
11
|
-
describe "fetch," do
|
12
|
-
it "requires a Query object" do
|
13
|
-
lambda { Barometer::WebService::Geocode.fetch }.should raise_error(ArgumentError)
|
14
|
-
lambda { Barometer::WebService::Geocode.fetch("invalid") }.should raise_error(ArgumentError)
|
15
|
-
query = Barometer::Query.new(@zipcode)
|
16
|
-
query.is_a?(Barometer::Query).should be_true
|
17
|
-
lambda { Barometer::WebService::Geocode.fetch(query) }.should_not raise_error(ArgumentError)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "queries (key no longer required)" do
|
21
|
-
query = Barometer::Query.new(@zipcode)
|
22
|
-
Barometer::WebService::Geocode.fetch(query).should_not be_nil
|
23
|
-
end
|
24
|
-
|
25
|
-
it "returns a Geo object" do
|
26
|
-
query = Barometer::Query.new(@zipcode)
|
27
|
-
Barometer::WebService::Geocode.fetch(query).is_a?(Data::Geo).should be_true
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::WebService::NoaaStation, :vcr => {
|
4
|
-
:cassette_name => "WebService::NoaaStation"
|
5
|
-
} do
|
6
|
-
before(:each) do
|
7
|
-
@latitude = "34.10"
|
8
|
-
@longitude = "-118.41"
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "and the class methods" do
|
12
|
-
describe "fetch," do
|
13
|
-
it "requires latitude" do
|
14
|
-
Barometer::WebService::NoaaStation.should_receive("_fetch").never
|
15
|
-
Barometer::WebService::NoaaStation.fetch(nil,@longitude)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "requires longitude" do
|
19
|
-
Barometer::WebService::NoaaStation.should_receive("_fetch").never
|
20
|
-
Barometer::WebService::NoaaStation.fetch(@latitude,nil)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "queries" do
|
24
|
-
Barometer::WebService::NoaaStation.fetch(@latitude,@longitude).should_not be_nil
|
25
|
-
end
|
26
|
-
|
27
|
-
it "returns a string" do
|
28
|
-
Barometer::WebService::NoaaStation.fetch(@latitude,@longitude).is_a?(String).should be_true
|
29
|
-
Barometer::WebService::NoaaStation.fetch(@latitude,@longitude).should == "KSMO"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::WebService::Placemaker do
|
4
|
-
before(:each) do
|
5
|
-
@coordinates = "40.756054,-73.986951"
|
6
|
-
@geocode = "New York, NY"
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "and the class methods" do
|
10
|
-
describe "fetch," do
|
11
|
-
it "requires a Query object" do
|
12
|
-
lambda { Barometer::WebService::Placemaker.fetch }.should raise_error(ArgumentError)
|
13
|
-
lambda { Barometer::WebService::Placemaker.fetch("invalid") }.should raise_error(ArgumentError)
|
14
|
-
query = Barometer::Query.new(@coordinates)
|
15
|
-
query.is_a?(Barometer::Query).should be_true
|
16
|
-
lambda { Barometer::WebService::Placemaker.fetch(query) }.should_not raise_error(ArgumentError)
|
17
|
-
end
|
18
|
-
|
19
|
-
# it "detects the key" do
|
20
|
-
# query = Barometer::Query.new(@zipcode)
|
21
|
-
# Barometer.google_geocode_key = nil
|
22
|
-
# Barometer::WebService::Geocode.fetch(query).should be_nil
|
23
|
-
# Barometer.google_geocode_key = KEY
|
24
|
-
# Barometer::WebService::Geocode.fetch(query).should_not be_nil
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
# it "returns a Geo object" do
|
28
|
-
# query = Barometer::Query.new(@zipcode)
|
29
|
-
# Barometer::WebService::Geocode.fetch(query).is_a?(Data::Geo).should be_true
|
30
|
-
# end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
# it "detects the Google Geocode Key" do
|
35
|
-
# Barometer.google_geocode_key = nil
|
36
|
-
# Barometer::WebService::Geocode.send("_has_geocode_key?").should be_false
|
37
|
-
# Barometer.google_geocode_key = KEY
|
38
|
-
# Barometer::WebService::Geocode.send("_has_geocode_key?").should be_true
|
39
|
-
# end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Barometer::WebService do
|
4
|
-
describe "and the class method" do
|
5
|
-
describe "source" do
|
6
|
-
it "stubs fetch" do
|
7
|
-
lambda { Barometer::WebService.fetch }.should raise_error(NotImplementedError)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "detects a Query object" do
|
11
|
-
invalid = 1
|
12
|
-
Barometer::WebService.send("_is_a_query?").should be_false
|
13
|
-
Barometer::WebService.send("_is_a_query?", invalid).should be_false
|
14
|
-
valid = Barometer::Query.new
|
15
|
-
valid.is_a?(Barometer::Query).should be_true
|
16
|
-
Barometer::WebService.send("_is_a_query?", valid).should be_true
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|