attack-barometer 0.5.0 → 0.6.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/README.rdoc +51 -9
- data/VERSION.yml +1 -1
- data/bin/barometer +57 -7
- data/lib/barometer/base.rb +3 -0
- data/lib/barometer/data/sun.rb +10 -0
- data/lib/barometer/data/zone.rb +79 -188
- data/lib/barometer/data.rb +11 -6
- data/lib/barometer/formats/coordinates.rb +4 -1
- data/lib/barometer/formats/geocode.rb +9 -7
- data/lib/barometer/formats/icao.rb +2 -2
- data/lib/barometer/formats/weather_id.rb +2 -2
- data/lib/barometer/measurements/common.rb +113 -0
- data/lib/barometer/{data → measurements}/current.rb +17 -42
- data/lib/barometer/measurements/forecast.rb +62 -0
- data/lib/barometer/measurements/forecast_array.rb +72 -0
- data/lib/barometer/{data → measurements}/measurement.rb +57 -45
- data/lib/barometer/measurements/night.rb +27 -0
- data/lib/barometer/query.rb +55 -5
- data/lib/barometer/services.rb +3 -1
- data/lib/barometer/translations/zone_codes.yml +360 -0
- data/lib/barometer/weather.rb +5 -4
- data/lib/barometer/weather_services/google.rb +19 -35
- data/lib/barometer/weather_services/service.rb +113 -255
- data/lib/barometer/weather_services/weather_bug.rb +291 -2
- data/lib/barometer/weather_services/weather_dot_com.rb +45 -54
- data/lib/barometer/weather_services/wunderground.rb +83 -89
- data/lib/barometer/weather_services/yahoo.rb +44 -91
- data/lib/barometer/web_services/geocode.rb +1 -0
- data/lib/barometer/web_services/timezone.rb +40 -0
- data/lib/barometer/web_services/weather_id.rb +17 -2
- data/lib/barometer.rb +11 -0
- data/lib/demometer/demometer.rb +28 -0
- data/lib/demometer/public/css/master.css +259 -1
- data/lib/demometer/views/index.erb +2 -0
- data/lib/demometer/views/layout.erb +3 -2
- data/lib/demometer/views/measurement.erb +4 -1
- data/lib/demometer/views/readme.erb +116 -88
- data/spec/data/sun_spec.rb +53 -0
- data/spec/data/zone_spec.rb +330 -100
- data/spec/fixtures/formats/weather_id/ksfo.xml +1 -0
- data/spec/fixtures/services/weather_bug/90210_current.xml +1 -0
- data/spec/fixtures/services/weather_bug/90210_forecast.xml +1 -0
- data/spec/formats/weather_id_spec.rb +10 -5
- data/spec/measurements/common_spec.rb +352 -0
- data/spec/{data → measurements}/current_spec.rb +40 -103
- data/spec/measurements/forecast_array_spec.rb +165 -0
- data/spec/measurements/forecast_spec.rb +135 -0
- data/spec/{data → measurements}/measurement_spec.rb +86 -107
- data/spec/measurements/night_measurement_spec.rb +49 -0
- data/spec/query_spec.rb +12 -2
- data/spec/spec_helper.rb +28 -1
- data/spec/weather_services/google_spec.rb +27 -117
- data/spec/weather_services/services_spec.rb +49 -1024
- data/spec/weather_services/weather_bug_spec.rb +274 -0
- data/spec/weather_services/weather_dot_com_spec.rb +45 -125
- data/spec/weather_services/wunderground_spec.rb +42 -136
- data/spec/weather_services/yahoo_spec.rb +26 -116
- data/spec/weather_spec.rb +45 -45
- metadata +23 -11
- data/lib/barometer/data/forecast.rb +0 -84
- data/lib/barometer/data/night.rb +0 -69
- data/lib/barometer/extensions/graticule.rb +0 -51
- data/spec/data/forecast_spec.rb +0 -192
- data/spec/data/night_measurement_spec.rb +0 -136
@@ -11,7 +11,11 @@ describe "Google" do
|
|
11
11
|
describe "the class methods" do
|
12
12
|
|
13
13
|
it "defines accepted_formats" do
|
14
|
-
WeatherService::Google.
|
14
|
+
WeatherService::Google._accepted_formats.should == @accepted_formats
|
15
|
+
end
|
16
|
+
|
17
|
+
it "defines source_name" do
|
18
|
+
WeatherService::Google._source_name.should == :google
|
15
19
|
end
|
16
20
|
|
17
21
|
# it "defines base_uri" do
|
@@ -19,7 +23,7 @@ describe "Google" do
|
|
19
23
|
# end
|
20
24
|
|
21
25
|
it "defines get_all" do
|
22
|
-
WeatherService::Google.respond_to?("
|
26
|
+
WeatherService::Google.respond_to?("_fetch").should be_true
|
23
27
|
end
|
24
28
|
|
25
29
|
end
|
@@ -27,17 +31,17 @@ describe "Google" do
|
|
27
31
|
describe "building the current data" do
|
28
32
|
|
29
33
|
it "defines the build method" do
|
30
|
-
WeatherService::Google.respond_to?("
|
34
|
+
WeatherService::Google.respond_to?("_build_current").should be_true
|
31
35
|
end
|
32
36
|
|
33
37
|
it "requires Hash input" do
|
34
|
-
lambda { WeatherService::Google.
|
35
|
-
lambda { WeatherService::Google.
|
38
|
+
lambda { WeatherService::Google._build_current }.should raise_error(ArgumentError)
|
39
|
+
lambda { WeatherService::Google._build_current({}) }.should_not raise_error(ArgumentError)
|
36
40
|
end
|
37
41
|
|
38
|
-
it "returns
|
39
|
-
current = WeatherService::Google.
|
40
|
-
current.is_a?(
|
42
|
+
it "returns Measurement::Current object" do
|
43
|
+
current = WeatherService::Google._build_current({})
|
44
|
+
current.is_a?(Measurement::Current).should be_true
|
41
45
|
end
|
42
46
|
|
43
47
|
end
|
@@ -45,17 +49,17 @@ describe "Google" do
|
|
45
49
|
describe "building the forecast data" do
|
46
50
|
|
47
51
|
it "defines the build method" do
|
48
|
-
WeatherService::Google.respond_to?("
|
52
|
+
WeatherService::Google.respond_to?("_build_forecast").should be_true
|
49
53
|
end
|
50
54
|
|
51
55
|
it "requires Hash input" do
|
52
|
-
lambda { WeatherService::Google.
|
53
|
-
lambda { WeatherService::Google.
|
56
|
+
lambda { WeatherService::Google._build_forecast }.should raise_error(ArgumentError)
|
57
|
+
lambda { WeatherService::Google._build_forecast({}) }.should_not raise_error(ArgumentError)
|
54
58
|
end
|
55
59
|
|
56
60
|
it "returns Array object" do
|
57
|
-
current = WeatherService::Google.
|
58
|
-
current.is_a?(
|
61
|
+
current = WeatherService::Google._build_forecast({})
|
62
|
+
current.is_a?(Measurement::ForecastArray).should be_true
|
59
63
|
end
|
60
64
|
|
61
65
|
end
|
@@ -63,18 +67,18 @@ describe "Google" do
|
|
63
67
|
describe "building the location data" do
|
64
68
|
|
65
69
|
it "defines the build method" do
|
66
|
-
WeatherService::Google.respond_to?("
|
70
|
+
WeatherService::Google.respond_to?("_build_location").should be_true
|
67
71
|
end
|
68
72
|
|
69
73
|
it "requires Barometer::Geo input" do
|
70
74
|
geo = Data::Geo.new({})
|
71
|
-
lambda { WeatherService::Google.
|
72
|
-
lambda { WeatherService::Google.
|
75
|
+
lambda { WeatherService::Google._build_location(nil,{}) }.should raise_error(ArgumentError)
|
76
|
+
lambda { WeatherService::Google._build_location(nil,geo) }.should_not raise_error(ArgumentError)
|
73
77
|
end
|
74
78
|
|
75
79
|
it "returns Barometer::Location object" do
|
76
80
|
geo = Data::Geo.new({})
|
77
|
-
location = WeatherService::Google.
|
81
|
+
location = WeatherService::Google._build_location(nil,geo)
|
78
82
|
location.is_a?(Data::Location).should be_true
|
79
83
|
end
|
80
84
|
|
@@ -97,7 +101,7 @@ describe "Google" do
|
|
97
101
|
|
98
102
|
before(:each) do
|
99
103
|
@query = Barometer::Query.new("Calgary,AB")
|
100
|
-
@measurement =
|
104
|
+
@measurement = Barometer::Measurement.new
|
101
105
|
|
102
106
|
FakeWeb.register_uri(:get,
|
103
107
|
"http://google.com/ig/api?weather=#{CGI.escape(@query.q)}&hl=en-GB",
|
@@ -116,8 +120,8 @@ describe "Google" do
|
|
116
120
|
|
117
121
|
it "requires a Barometer::Measurement object" do
|
118
122
|
lambda { Barometer::WeatherService::Google._measure(nil, @query) }.should raise_error(ArgumentError)
|
119
|
-
lambda { Barometer::WeatherService::Google._measure("
|
120
|
-
|
123
|
+
lambda { Barometer::WeatherService::Google._measure("invalid", @query) }.should raise_error(ArgumentError)
|
124
|
+
|
121
125
|
lambda { Barometer::WeatherService::Google._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
122
126
|
end
|
123
127
|
|
@@ -130,109 +134,15 @@ describe "Google" do
|
|
130
134
|
|
131
135
|
it "returns a Barometer::Measurement object" do
|
132
136
|
result = Barometer::WeatherService::Google._measure(@measurement, @query)
|
133
|
-
result.is_a?(
|
134
|
-
result.current.is_a?(
|
135
|
-
result.forecast.is_a?(
|
136
|
-
|
137
|
-
result.source.should == :google
|
137
|
+
result.is_a?(Barometer::Measurement).should be_true
|
138
|
+
result.current.is_a?(Measurement::Current).should be_true
|
139
|
+
result.forecast.is_a?(Measurement::ForecastArray).should be_true
|
138
140
|
end
|
139
141
|
|
140
142
|
end
|
141
143
|
|
142
144
|
end
|
143
145
|
|
144
|
-
describe "when answering the simple questions," do
|
145
|
-
|
146
|
-
before(:each) do
|
147
|
-
@measurement = Data::Measurement.new
|
148
|
-
end
|
149
|
-
|
150
|
-
describe "currently_wet_by_icon?" do
|
151
|
-
|
152
|
-
before(:each) do
|
153
|
-
@measurement.current = Data::CurrentMeasurement.new
|
154
|
-
end
|
155
|
-
|
156
|
-
it "returns true if matching icon code" do
|
157
|
-
@measurement.current.icon = "rain"
|
158
|
-
@measurement.current.icon?.should be_true
|
159
|
-
WeatherService::Google.currently_wet_by_icon?(@measurement.current).should be_true
|
160
|
-
end
|
161
|
-
|
162
|
-
it "returns false if NO matching icon code" do
|
163
|
-
@measurement.current.icon = "sunny"
|
164
|
-
@measurement.current.icon?.should be_true
|
165
|
-
WeatherService::Google.currently_wet_by_icon?(@measurement.current).should be_false
|
166
|
-
end
|
167
|
-
|
168
|
-
end
|
169
|
-
|
170
|
-
describe "forecasted_wet_by_icon?" do
|
171
|
-
|
172
|
-
before(:each) do
|
173
|
-
@measurement.forecast = [Data::ForecastMeasurement.new]
|
174
|
-
@measurement.forecast.first.date = Date.today
|
175
|
-
@measurement.forecast.size.should == 1
|
176
|
-
end
|
177
|
-
|
178
|
-
it "returns true if matching icon code" do
|
179
|
-
@measurement.forecast.first.icon = "rain"
|
180
|
-
@measurement.forecast.first.icon?.should be_true
|
181
|
-
WeatherService::Google.forecasted_wet_by_icon?(@measurement.forecast.first).should be_true
|
182
|
-
end
|
183
|
-
|
184
|
-
it "returns false if NO matching icon code" do
|
185
|
-
@measurement.forecast.first.icon = "sunny"
|
186
|
-
@measurement.forecast.first.icon?.should be_true
|
187
|
-
WeatherService::Google.forecasted_wet_by_icon?(@measurement.forecast.first).should be_false
|
188
|
-
end
|
189
|
-
|
190
|
-
end
|
191
|
-
|
192
|
-
describe "currently_sunny_by_icon?" do
|
193
|
-
|
194
|
-
before(:each) do
|
195
|
-
@measurement.current = Data::CurrentMeasurement.new
|
196
|
-
end
|
197
|
-
|
198
|
-
it "returns true if matching icon code" do
|
199
|
-
@measurement.current.icon = "sunny"
|
200
|
-
@measurement.current.icon?.should be_true
|
201
|
-
WeatherService::Google.currently_sunny_by_icon?(@measurement.current).should be_true
|
202
|
-
end
|
203
|
-
|
204
|
-
it "returns false if NO matching icon code" do
|
205
|
-
@measurement.current.icon = "rain"
|
206
|
-
@measurement.current.icon?.should be_true
|
207
|
-
WeatherService::Google.currently_sunny_by_icon?(@measurement.current).should be_false
|
208
|
-
end
|
209
|
-
|
210
|
-
end
|
211
|
-
|
212
|
-
describe "forecasted_sunny_by_icon?" do
|
213
|
-
|
214
|
-
before(:each) do
|
215
|
-
@measurement.forecast = [Data::ForecastMeasurement.new]
|
216
|
-
@measurement.forecast.first.date = Date.today
|
217
|
-
@measurement.forecast.size.should == 1
|
218
|
-
end
|
219
|
-
|
220
|
-
it "returns true if matching icon code" do
|
221
|
-
@measurement.forecast.first.icon = "sunny"
|
222
|
-
@measurement.forecast.first.icon?.should be_true
|
223
|
-
WeatherService::Google.forecasted_sunny_by_icon?(@measurement.forecast.first).should be_true
|
224
|
-
end
|
225
|
-
|
226
|
-
it "returns false if NO matching icon code" do
|
227
|
-
@measurement.forecast.first.icon = "rain"
|
228
|
-
@measurement.forecast.first.icon?.should be_true
|
229
|
-
WeatherService::Google.forecasted_sunny_by_icon?(@measurement.forecast.first).should be_false
|
230
|
-
end
|
231
|
-
|
232
|
-
end
|
233
|
-
|
234
|
-
end
|
235
|
-
|
236
146
|
# describe "overall data correctness" do
|
237
147
|
#
|
238
148
|
# before(:each) do
|