barometer 0.7.3 → 0.8.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 +1 -0
- data/.travis.yml +7 -0
- data/LICENSE +1 -1
- data/{README.rdoc → README.md} +124 -110
- data/Rakefile +1 -21
- data/TODO +8 -9
- data/barometer.gemspec +20 -19
- data/bin/barometer +36 -83
- data/lib/barometer.rb +13 -11
- data/lib/barometer/base.rb +10 -10
- data/lib/barometer/data.rb +1 -1
- data/lib/barometer/data/distance.rb +25 -25
- data/lib/barometer/data/geo.rb +9 -9
- data/lib/barometer/data/local_datetime.rb +24 -20
- data/lib/barometer/data/local_time.rb +13 -13
- data/lib/barometer/data/location.rb +6 -6
- data/lib/barometer/data/pressure.rb +24 -24
- data/lib/barometer/data/speed.rb +28 -28
- data/lib/barometer/data/sun.rb +7 -7
- data/lib/barometer/data/temperature.rb +29 -29
- data/lib/barometer/data/units.rb +9 -9
- data/lib/barometer/data/zone.rb +19 -19
- data/lib/barometer/formats.rb +1 -1
- data/lib/barometer/formats/coordinates.rb +7 -7
- data/lib/barometer/formats/format.rb +6 -6
- data/lib/barometer/formats/geocode.rb +5 -5
- data/lib/barometer/formats/icao.rb +6 -6
- data/lib/barometer/formats/postalcode.rb +3 -3
- data/lib/barometer/formats/short_zipcode.rb +2 -2
- data/lib/barometer/formats/weather_id.rb +10 -10
- data/lib/barometer/formats/woe_id.rb +20 -20
- data/lib/barometer/formats/zipcode.rb +3 -3
- data/lib/barometer/key_file_parser.rb +20 -0
- data/lib/barometer/measurements/measurement.rb +32 -32
- data/lib/barometer/measurements/result.rb +39 -39
- data/lib/barometer/measurements/result_array.rb +12 -12
- data/lib/barometer/query.rb +15 -15
- data/lib/barometer/services.rb +3 -3
- data/lib/barometer/translations/icao_country_codes.yml +20 -20
- data/lib/barometer/translations/weather_country_codes.yml +1 -1
- data/lib/barometer/translations/zone_codes.yml +2 -2
- data/lib/barometer/version.rb +3 -0
- data/lib/barometer/weather.rb +27 -27
- data/lib/barometer/weather_services/noaa.rb +314 -3
- data/lib/barometer/weather_services/service.rb +32 -30
- data/lib/barometer/weather_services/weather_bug.rb +35 -33
- data/lib/barometer/weather_services/wunderground.rb +31 -29
- data/lib/barometer/weather_services/yahoo.rb +36 -35
- data/lib/barometer/web_services/geocode.rb +5 -7
- data/lib/barometer/web_services/noaa_station_id.rb +53 -0
- data/lib/barometer/web_services/placemaker.rb +11 -13
- data/lib/barometer/web_services/timezone.rb +5 -7
- data/lib/barometer/web_services/weather_id.rb +4 -6
- data/lib/barometer/web_services/web_service.rb +4 -4
- data/spec/barometer_spec.rb +25 -27
- data/spec/cassettes/Barometer.json +1 -0
- data/spec/cassettes/Query.json +1 -0
- data/spec/cassettes/Query_Format_Coordinates.json +1 -0
- data/spec/cassettes/Query_Format_Geocode.json +1 -0
- data/spec/cassettes/Query_Format_WeatherID.json +1 -0
- data/spec/cassettes/Query_Format_WoeID.json +1 -0
- data/spec/cassettes/WeatherService.json +1 -0
- data/spec/cassettes/WeatherService_Noaa.json +1 -0
- data/spec/cassettes/WeatherService_WeatherBug.json +1 -0
- data/spec/cassettes/WeatherService_Wunderground.json +1 -0
- data/spec/cassettes/WeatherService_Yahoo.json +1 -0
- data/spec/cassettes/WebService_Geocode.json +1 -0
- data/spec/cassettes/WebService_NoaaStation.json +1 -0
- data/spec/data/distance_spec.rb +60 -60
- data/spec/data/geo_spec.rb +23 -23
- data/spec/data/local_datetime_spec.rb +44 -44
- data/spec/data/local_time_spec.rb +47 -47
- data/spec/data/location_spec.rb +16 -16
- data/spec/data/pressure_spec.rb +61 -61
- data/spec/data/speed_spec.rb +69 -69
- data/spec/data/sun_spec.rb +25 -25
- data/spec/data/temperature_spec.rb +68 -68
- data/spec/data/units_spec.rb +21 -21
- data/spec/data/zone_spec.rb +35 -35
- data/spec/formats/coordinates_spec.rb +27 -27
- data/spec/formats/format_spec.rb +17 -25
- data/spec/formats/geocode_spec.rb +23 -31
- data/spec/formats/icao_spec.rb +26 -32
- data/spec/formats/postalcode_spec.rb +22 -28
- data/spec/formats/short_zipcode_spec.rb +20 -26
- data/spec/formats/weather_id_spec.rb +57 -67
- data/spec/formats/woe_id_spec.rb +59 -59
- data/spec/formats/zipcode_spec.rb +39 -47
- data/spec/key_file_parser_spec.rb +28 -0
- data/spec/measurements/measurement_spec.rb +79 -133
- data/spec/measurements/result_array_spec.rb +23 -38
- data/spec/measurements/result_spec.rb +100 -128
- data/spec/query_spec.rb +83 -100
- data/spec/spec_helper.rb +24 -6
- data/spec/weather_services/noaa_spec.rb +179 -0
- data/spec/weather_services/services_spec.rb +28 -36
- data/spec/weather_services/weather_bug_spec.rb +57 -77
- data/spec/weather_services/wunderground_spec.rb +36 -65
- data/spec/weather_services/yahoo_spec.rb +38 -60
- data/spec/weather_spec.rb +79 -79
- data/spec/web_services/geocode_spec.rb +7 -11
- data/spec/web_services/noaa_station_id_spec.rb +33 -0
- data/spec/web_services/placemaker_spec.rb +7 -12
- data/spec/web_services/web_services_spec.rb +3 -9
- metadata +214 -163
- data/VERSION.yml +0 -5
- data/lib/barometer/weather_services/google.rb +0 -142
- data/lib/barometer/weather_services/weather_dot_com.rb +0 -279
- data/spec/fakeweb_helper.rb +0 -179
- data/spec/fixtures/formats/weather_id/90210.xml +0 -7
- data/spec/fixtures/formats/weather_id/from_USGA0028.xml +0 -3
- data/spec/fixtures/formats/weather_id/ksfo.xml +0 -1
- data/spec/fixtures/formats/weather_id/manhattan.xml +0 -7
- data/spec/fixtures/formats/weather_id/new_york.xml +0 -1
- data/spec/fixtures/formats/weather_id/the_hills.xml +0 -1
- data/spec/fixtures/geocode/40_73_v3.json +0 -497
- data/spec/fixtures/geocode/90210_v3.json +0 -63
- data/spec/fixtures/geocode/T5B4M9_v3.json +0 -68
- data/spec/fixtures/geocode/atlanta_v3.json +0 -58
- data/spec/fixtures/geocode/calgary_ab_v3.json +0 -58
- data/spec/fixtures/geocode/ksfo_v3.json +0 -73
- data/spec/fixtures/geocode/newyork_ny_v3.json +0 -58
- data/spec/fixtures/services/google/calgary_ab.xml +0 -1
- data/spec/fixtures/services/placemaker/T5B4M9.xml +0 -65
- data/spec/fixtures/services/placemaker/atlanta.xml +0 -65
- data/spec/fixtures/services/placemaker/coords.xml +0 -65
- data/spec/fixtures/services/placemaker/ksfo.xml +0 -65
- data/spec/fixtures/services/placemaker/new_york.xml +0 -65
- data/spec/fixtures/services/placemaker/the_hills.xml +0 -65
- data/spec/fixtures/services/placemaker/w615702.xml +0 -47
- data/spec/fixtures/services/weather_bug/90210_current.xml +0 -93
- data/spec/fixtures/services/weather_bug/90210_forecast.xml +0 -76
- data/spec/fixtures/services/weather_dot_com/90210.xml +0 -1
- data/spec/fixtures/services/wunderground/current_calgary_ab.xml +0 -9
- data/spec/fixtures/services/wunderground/forecast_calgary_ab.xml +0 -13
- data/spec/fixtures/services/yahoo/90210.xml +0 -3
- data/spec/weather_services/google_spec.rb +0 -181
- data/spec/weather_services/weather_dot_com_spec.rb +0 -224
data/spec/formats/woe_id_spec.rb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require "addressable/uri"
|
2
3
|
|
3
|
-
|
4
|
-
|
4
|
+
params_in_body = lambda do |request_1, request_2|
|
5
|
+
a1 = Addressable::URI.parse("?#{request_1.body}")
|
6
|
+
a2 = Addressable::URI.parse("?#{request_2.body}")
|
7
|
+
a1.query_values == a2.query_values
|
8
|
+
end
|
9
|
+
|
10
|
+
describe Barometer::Query::Format::WoeID, :vcr => {
|
11
|
+
:match_requests_on => [:method, :uri, params_in_body],
|
12
|
+
:cassette_name => "Query::Format::WoeID"
|
13
|
+
} do
|
5
14
|
before(:each) do
|
6
15
|
@short_zipcode = "90210"
|
7
16
|
@zipcode = @short_zipcode
|
@@ -13,81 +22,77 @@ describe "Query::WoeID" do
|
|
13
22
|
@icao = "KSFO"
|
14
23
|
@woe_id = "615702"
|
15
24
|
end
|
16
|
-
|
25
|
+
|
17
26
|
describe "and class methods" do
|
18
|
-
|
19
27
|
it "returns a format" do
|
20
28
|
Barometer::Query::Format::WoeID.format.should == :woe_id
|
21
29
|
end
|
22
|
-
|
30
|
+
|
23
31
|
it "returns a country" do
|
24
32
|
Barometer::Query::Format::WoeID.country_code.should be_nil
|
25
33
|
end
|
26
|
-
|
34
|
+
|
27
35
|
it "returns a regex" do
|
28
36
|
Barometer::Query::Format::WoeID.regex.should_not be_nil
|
29
37
|
Barometer::Query::Format::WoeID.regex.is_a?(Regexp).should be_true
|
30
38
|
end
|
31
|
-
|
39
|
+
|
32
40
|
it "returns the convertable_formats" do
|
33
|
-
Query::Format::WoeID.convertable_formats.should_not be_nil
|
34
|
-
Query::Format::WoeID.convertable_formats.is_a?(Array).should be_true
|
35
|
-
Query::Format::WoeID.convertable_formats.include?(:short_zipcode).should be_true
|
36
|
-
Query::Format::WoeID.convertable_formats.include?(:zipcode).should be_true
|
37
|
-
Query::Format::WoeID.convertable_formats.include?(:postalcode).should be_true
|
38
|
-
Query::Format::WoeID.convertable_formats.include?(:weather_id).should be_true
|
39
|
-
Query::Format::WoeID.convertable_formats.include?(:coordinates).should be_true
|
40
|
-
Query::Format::WoeID.convertable_formats.include?(:icao).should be_true
|
41
|
-
Query::Format::WoeID.convertable_formats.include?(:geocode).should be_true
|
41
|
+
Barometer::Query::Format::WoeID.convertable_formats.should_not be_nil
|
42
|
+
Barometer::Query::Format::WoeID.convertable_formats.is_a?(Array).should be_true
|
43
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:short_zipcode).should be_true
|
44
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:zipcode).should be_true
|
45
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:postalcode).should be_true
|
46
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:weather_id).should be_true
|
47
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:coordinates).should be_true
|
48
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:icao).should be_true
|
49
|
+
Barometer::Query::Format::WoeID.convertable_formats.include?(:geocode).should be_true
|
42
50
|
end
|
43
|
-
|
51
|
+
|
44
52
|
describe "is?," do
|
45
|
-
|
46
53
|
it "recognizes a valid 4 digit code format" do
|
47
54
|
@query = "8775"
|
48
55
|
Barometer::Query::Format::WoeID.is?(@query).should be_true
|
49
56
|
end
|
50
|
-
|
57
|
+
|
51
58
|
it "recognizes a valid 6 digit code format" do
|
52
59
|
@query = "615702"
|
53
60
|
Barometer::Query::Format::WoeID.is?(@query).should be_true
|
54
61
|
end
|
55
|
-
|
62
|
+
|
56
63
|
it "recognizes a valid 7 digit code format" do
|
57
64
|
@query = "2459115"
|
58
65
|
Barometer::Query::Format::WoeID.is?(@query).should be_true
|
59
66
|
end
|
60
|
-
|
67
|
+
|
61
68
|
it "recognizes a valid 5 digit code with a prepended 'w'" do
|
62
69
|
@query = "w90210"
|
63
70
|
Barometer::Query::Format::WoeID.is?(@query).should be_true
|
64
71
|
end
|
65
|
-
|
72
|
+
|
66
73
|
it "does not recognize a zip code" do
|
67
74
|
@query = "90210"
|
68
75
|
Barometer::Query::Format::WoeID.is?(@query).should be_false
|
69
76
|
end
|
70
|
-
|
77
|
+
|
71
78
|
it "recognizes non-valid format" do
|
72
79
|
@query = "USGA0028"
|
73
80
|
Barometer::Query::Format::WoeID.is?(@query).should be_false
|
74
81
|
end
|
75
|
-
|
76
82
|
end
|
77
|
-
|
83
|
+
|
78
84
|
it "converts the query" do
|
79
85
|
query_no_conversion = "2459115"
|
80
86
|
query = Barometer::Query.new(query_no_conversion)
|
81
87
|
query.q.should == query_no_conversion
|
82
|
-
|
88
|
+
|
83
89
|
query_with_conversion = "w90210"
|
84
90
|
query = Barometer::Query.new(query_with_conversion)
|
85
91
|
query.q.should_not == query_with_conversion
|
86
92
|
query.q.should == "90210"
|
87
93
|
end
|
88
|
-
|
94
|
+
|
89
95
|
describe "when reversing lookup" do
|
90
|
-
|
91
96
|
it "requires a Barometer::Query object" do
|
92
97
|
lambda { Barometer::Query::Format::WoeID.reverse }.should raise_error(ArgumentError)
|
93
98
|
lambda { Barometer::Query::Format::WoeID.reverse("invalid") }.should raise_error(ArgumentError)
|
@@ -95,12 +100,12 @@ describe "Query::WoeID" do
|
|
95
100
|
query.is_a?(Barometer::Query).should be_true
|
96
101
|
lambda { Barometer::Query::Format::WoeID.reverse(original_query) }.should_not raise_error(ArgumentError)
|
97
102
|
end
|
98
|
-
|
103
|
+
|
99
104
|
it "returns a Barometer::Query" do
|
100
105
|
query = Barometer::Query.new(@woe_id)
|
101
106
|
Barometer::Query::Format::WoeID.reverse(query).is_a?(Barometer::Query).should be_true
|
102
107
|
end
|
103
|
-
|
108
|
+
|
104
109
|
it "reverses a valid woe_id (US)" do
|
105
110
|
query = Barometer::Query.new(@woe_id)
|
106
111
|
new_query = Barometer::Query::Format::WoeID.reverse(query)
|
@@ -109,103 +114,98 @@ describe "Query::WoeID" do
|
|
109
114
|
new_query.format.should == :geocode
|
110
115
|
new_query.geo.should be_nil
|
111
116
|
end
|
112
|
-
|
117
|
+
|
113
118
|
it "doesn't reverse an invalid weather_id" do
|
114
119
|
query = Barometer::Query.new(@zipcode)
|
115
120
|
Barometer::Query::Format::WoeID.reverse(query).should be_nil
|
116
121
|
end
|
117
|
-
|
118
122
|
end
|
119
|
-
|
123
|
+
|
120
124
|
describe "when converting using 'to'," do
|
121
|
-
|
122
125
|
it "requires a Barometer::Query object" do
|
123
|
-
lambda { Query::Format::WoeID.to }.should raise_error(ArgumentError)
|
124
|
-
lambda { Query::Format::WoeID.to("invalid") }.should raise_error(ArgumentError)
|
126
|
+
lambda { Barometer::Query::Format::WoeID.to }.should raise_error(ArgumentError)
|
127
|
+
lambda { Barometer::Query::Format::WoeID.to("invalid") }.should raise_error(ArgumentError)
|
125
128
|
query = Barometer::Query.new(@woe_id)
|
126
129
|
query.is_a?(Barometer::Query).should be_true
|
127
|
-
lambda { Query::Format::WoeID.to(original_query) }.should_not raise_error(ArgumentError)
|
130
|
+
lambda { Barometer::Query::Format::WoeID.to(original_query) }.should_not raise_error(ArgumentError)
|
128
131
|
end
|
129
|
-
|
132
|
+
|
130
133
|
it "returns a Barometer::Query" do
|
131
134
|
query = Barometer::Query.new(@geocode)
|
132
|
-
Query::Format::WoeID.to(query).is_a?(Barometer::Query).should be_true
|
135
|
+
Barometer::Query::Format::WoeID.to(query).is_a?(Barometer::Query).should be_true
|
133
136
|
end
|
134
|
-
|
137
|
+
|
135
138
|
it "converts from short_zipcode" do
|
136
139
|
query = Barometer::Query.new(@short_zipcode)
|
137
140
|
query.format.should == :short_zipcode
|
138
|
-
new_query = Query::Format::WoeID.to(query)
|
141
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
139
142
|
new_query.q.should == "2363796"
|
140
143
|
new_query.country_code.should == "US"
|
141
144
|
new_query.format.should == :woe_id
|
142
145
|
new_query.geo.should_not be_nil
|
143
146
|
end
|
144
|
-
|
147
|
+
|
145
148
|
it "converts from zipcode" do
|
146
149
|
query = Barometer::Query.new(@zipcode)
|
147
150
|
query.format = :zipcode
|
148
151
|
query.format.should == :zipcode
|
149
|
-
new_query = Query::Format::WoeID.to(query)
|
152
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
150
153
|
new_query.q.should == "2363796"
|
151
154
|
new_query.country_code.should == "US"
|
152
155
|
new_query.format.should == :woe_id
|
153
156
|
new_query.geo.should_not be_nil
|
154
157
|
end
|
155
|
-
|
158
|
+
|
156
159
|
it "converts from postal code" do
|
157
160
|
query = Barometer::Query.new(@postal_code)
|
158
161
|
query.format = :postalcode
|
159
162
|
query.format.should == :postalcode
|
160
|
-
new_query = Query::Format::WoeID.to(query)
|
163
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
161
164
|
new_query.q.should == "8676"
|
162
165
|
new_query.country_code.should == "CA"
|
163
166
|
new_query.format.should == :woe_id
|
164
167
|
new_query.geo.should be_nil
|
165
168
|
end
|
166
|
-
|
169
|
+
|
167
170
|
it "converts from coordinates" do
|
168
171
|
query = Barometer::Query.new(@coordinates)
|
169
172
|
query.format.should == :coordinates
|
170
|
-
new_query = Query::Format::WoeID.to(query)
|
171
|
-
new_query.q.should == "
|
173
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
174
|
+
new_query.q.should == "12589342"
|
172
175
|
new_query.country_code.should be_nil
|
173
176
|
new_query.format.should == :woe_id
|
174
177
|
new_query.geo.should be_nil
|
175
178
|
end
|
176
|
-
|
179
|
+
|
177
180
|
it "converts from geocode" do
|
178
181
|
query = Barometer::Query.new(@geocode)
|
179
182
|
query.format.should == :geocode
|
180
|
-
new_query = Query::Format::WoeID.to(query)
|
183
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
181
184
|
new_query.q.should == "2459115"
|
182
185
|
new_query.country_code.should be_nil
|
183
186
|
new_query.format.should == :woe_id
|
184
187
|
new_query.geo.should be_nil
|
185
188
|
end
|
186
|
-
|
189
|
+
|
187
190
|
it "converts from weather_id" do
|
188
191
|
query = Barometer::Query.new(@weather_id)
|
189
192
|
query.format.should == :weather_id
|
190
|
-
new_query = Query::Format::WoeID.to(query)
|
193
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
191
194
|
new_query.q.should == "2357024"
|
192
195
|
new_query.country_code.should be_nil
|
193
196
|
new_query.format.should == :woe_id
|
194
197
|
new_query.geo.should be_nil
|
195
198
|
end
|
196
|
-
|
199
|
+
|
197
200
|
it "converts from icao" do
|
198
201
|
query = Barometer::Query.new(@icao)
|
199
202
|
query.format.should == :icao
|
200
|
-
new_query = Query::Format::WoeID.to(query)
|
201
|
-
new_query.q.should == "
|
203
|
+
new_query = Barometer::Query::Format::WoeID.to(query)
|
204
|
+
new_query.q.should == "2487956"
|
202
205
|
new_query.country_code.should == "US"
|
203
206
|
new_query.format.should == :woe_id
|
204
207
|
new_query.geo.should_not be_nil
|
205
208
|
end
|
206
|
-
|
207
209
|
end
|
208
|
-
|
209
210
|
end
|
210
|
-
|
211
|
-
end
|
211
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe Barometer::Query::Format::Zipcode do
|
5
4
|
before(:each) do
|
6
5
|
@short_zipcode = "90210"
|
7
6
|
@zipcode = @short_zipcode
|
@@ -12,100 +11,93 @@ describe "Query::Zipcode" do
|
|
12
11
|
@geocode = "New York, NY"
|
13
12
|
@icao = "KSFO"
|
14
13
|
end
|
15
|
-
|
14
|
+
|
16
15
|
describe "and class methods" do
|
17
|
-
|
18
16
|
it "returns a format" do
|
19
|
-
Query::Format::Zipcode.format.should == :zipcode
|
17
|
+
Barometer::Query::Format::Zipcode.format.should == :zipcode
|
20
18
|
end
|
21
|
-
|
19
|
+
|
22
20
|
it "returns a country" do
|
23
|
-
Query::Format::Zipcode.country_code.should == "US"
|
24
|
-
Query::Format::Zipcode.country_code("ignored").should == "US"
|
21
|
+
Barometer::Query::Format::Zipcode.country_code.should == "US"
|
22
|
+
Barometer::Query::Format::Zipcode.country_code("ignored").should == "US"
|
25
23
|
end
|
26
|
-
|
24
|
+
|
27
25
|
it "returns a regex" do
|
28
|
-
Query::Format::Zipcode.regex.should_not be_nil
|
29
|
-
Query::Format::Zipcode.regex.is_a?(Regexp).should be_true
|
26
|
+
Barometer::Query::Format::Zipcode.regex.should_not be_nil
|
27
|
+
Barometer::Query::Format::Zipcode.regex.is_a?(Regexp).should be_true
|
30
28
|
end
|
31
|
-
|
29
|
+
|
32
30
|
it "returns the convertable_formats" do
|
33
|
-
Query::Format::Zipcode.convertable_formats.should_not be_nil
|
34
|
-
Query::Format::Zipcode.convertable_formats.is_a?(Array).should be_true
|
35
|
-
Query::Format::Zipcode.convertable_formats.include?(:short_zipcode).should be_true
|
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
|
36
34
|
end
|
37
|
-
|
35
|
+
|
38
36
|
describe "is?," do
|
39
|
-
|
40
37
|
before(:each) do
|
41
38
|
@valid = "90210-5555"
|
42
39
|
@invalid = "invalid"
|
43
40
|
end
|
44
|
-
|
41
|
+
|
45
42
|
it "recognizes a valid format" do
|
46
|
-
Query::Format::Zipcode.is?(@valid).should be_true
|
43
|
+
Barometer::Query::Format::Zipcode.is?(@valid).should be_true
|
47
44
|
end
|
48
|
-
|
45
|
+
|
49
46
|
it "recognizes non-valid format" do
|
50
|
-
Query::Format::Zipcode.is?(@invalid).should be_false
|
47
|
+
Barometer::Query::Format::Zipcode.is?(@invalid).should be_false
|
51
48
|
end
|
52
|
-
|
53
49
|
end
|
54
|
-
|
50
|
+
|
55
51
|
describe "when converting using 'to'," do
|
56
|
-
|
57
52
|
it "requires a Barometer::Query object" do
|
58
|
-
lambda { Query::Format::Zipcode.to }.should raise_error(ArgumentError)
|
59
|
-
lambda { Query::Format::Zipcode.to("invalid") }.should raise_error(ArgumentError)
|
53
|
+
lambda { Barometer::Query::Format::Zipcode.to }.should raise_error(ArgumentError)
|
54
|
+
lambda { Barometer::Query::Format::Zipcode.to("invalid") }.should raise_error(ArgumentError)
|
60
55
|
query = Barometer::Query.new(@zipcode)
|
61
56
|
query.is_a?(Barometer::Query).should be_true
|
62
|
-
lambda { Query::Format::Zipcode.to(original_query) }.should_not raise_error(ArgumentError)
|
57
|
+
lambda { Barometer::Query::Format::Zipcode.to(original_query) }.should_not raise_error(ArgumentError)
|
63
58
|
end
|
64
|
-
|
59
|
+
|
65
60
|
it "returns a Barometer::Query" do
|
66
61
|
query = Barometer::Query.new(@short_zipcode)
|
67
|
-
Query::Format::Zipcode.to(query).is_a?(Barometer::Query).should be_true
|
62
|
+
Barometer::Query::Format::Zipcode.to(query).is_a?(Barometer::Query).should be_true
|
68
63
|
end
|
69
|
-
|
64
|
+
|
70
65
|
it "converts from short_zipcode" do
|
71
66
|
query = Barometer::Query.new(@short_zipcode)
|
72
67
|
query.format.should == :short_zipcode
|
73
|
-
new_query = Query::Format::Zipcode.to(query)
|
68
|
+
new_query = Barometer::Query::Format::Zipcode.to(query)
|
74
69
|
new_query.q.should == @short_zipcode
|
75
70
|
new_query.format.should == :zipcode
|
76
71
|
new_query.country_code.should == "US"
|
77
72
|
new_query.geo.should be_nil
|
78
73
|
end
|
79
|
-
|
74
|
+
|
80
75
|
it "returns nil for other formats" do
|
81
76
|
query = Barometer::Query.new(@zipcode)
|
82
77
|
query.format = :zipcode
|
83
78
|
query.format.should == :zipcode
|
84
|
-
Query::Format::Zipcode.to(query).should be_nil
|
85
|
-
|
79
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
80
|
+
|
86
81
|
query = Barometer::Query.new(@weather_id)
|
87
82
|
query.format.should == :weather_id
|
88
|
-
Query::Format::Zipcode.to(query).should be_nil
|
89
|
-
|
83
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
84
|
+
|
90
85
|
query = Barometer::Query.new(@postal_code)
|
91
86
|
query.format.should == :postalcode
|
92
|
-
Query::Format::Zipcode.to(query).should be_nil
|
93
|
-
|
87
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
88
|
+
|
94
89
|
query = Barometer::Query.new(@coordinates)
|
95
90
|
query.format.should == :coordinates
|
96
|
-
Query::Format::Zipcode.to(query).should be_nil
|
97
|
-
|
91
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
92
|
+
|
98
93
|
query = Barometer::Query.new(@geocode)
|
99
94
|
query.format.should == :geocode
|
100
|
-
Query::Format::Zipcode.to(query).should be_nil
|
101
|
-
|
95
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
96
|
+
|
102
97
|
query = Barometer::Query.new(@icao)
|
103
98
|
query.format.should == :icao
|
104
|
-
Query::Format::Zipcode.to(query).should be_nil
|
99
|
+
Barometer::Query::Format::Zipcode.to(query).should be_nil
|
105
100
|
end
|
106
|
-
|
107
101
|
end
|
108
|
-
|
109
102
|
end
|
110
|
-
|
111
|
-
end
|
103
|
+
end
|
@@ -0,0 +1,28 @@
|
|
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,199 +1,189 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe Barometer::Measurement do
|
5
4
|
describe "when initialized" do
|
6
|
-
|
7
5
|
before(:each) do
|
8
6
|
@measurement = Barometer::Measurement.new
|
9
7
|
end
|
10
|
-
|
8
|
+
|
11
9
|
it "responds to source" do
|
12
10
|
@measurement.source.should be_nil
|
13
11
|
end
|
14
|
-
|
12
|
+
|
15
13
|
it "stores the source" do
|
16
14
|
source = :wunderground
|
17
15
|
measurement = Barometer::Measurement.new(source)
|
18
16
|
measurement.source.should_not be_nil
|
19
17
|
measurement.source.should == source
|
20
18
|
end
|
21
|
-
|
19
|
+
|
22
20
|
it "responds to utc_time_stamp" do
|
23
21
|
@measurement.utc_time_stamp.should be_nil
|
24
22
|
end
|
25
|
-
|
23
|
+
|
26
24
|
it "responds to current" do
|
27
25
|
@measurement.current.should be_nil
|
28
26
|
end
|
29
|
-
|
27
|
+
|
30
28
|
it "responds to forecast (and defaults to an empty Array)" do
|
31
29
|
@measurement.forecast.should be_nil
|
32
30
|
end
|
33
|
-
|
31
|
+
|
34
32
|
it "responds to timezone" do
|
35
33
|
@measurement.timezone.should be_nil
|
36
34
|
end
|
37
|
-
|
35
|
+
|
38
36
|
it "responds to station" do
|
39
37
|
@measurement.station.should be_nil
|
40
38
|
end
|
41
|
-
|
39
|
+
|
42
40
|
it "responds to location" do
|
43
41
|
@measurement.location.should be_nil
|
44
42
|
end
|
45
|
-
|
43
|
+
|
46
44
|
it "responds to success" do
|
47
45
|
@measurement.success.should be_false
|
48
46
|
end
|
49
|
-
|
47
|
+
|
50
48
|
it "responds to current?" do
|
51
49
|
@measurement.current?.should be_true
|
52
50
|
end
|
53
|
-
|
51
|
+
|
54
52
|
it "responds to metric" do
|
55
53
|
@measurement.metric.should be_true
|
56
54
|
end
|
57
|
-
|
55
|
+
|
58
56
|
it "responds to weight" do
|
59
57
|
@measurement.weight.should == 1
|
60
58
|
end
|
61
|
-
|
59
|
+
|
62
60
|
it "responds to links" do
|
63
61
|
@measurement.links.should == {}
|
64
62
|
end
|
65
|
-
|
63
|
+
|
66
64
|
it "responds to measured_at" do
|
67
65
|
@measurement.measured_at.should be_nil
|
68
66
|
end
|
69
|
-
|
70
|
-
# it "responds to measured_for" do
|
71
|
-
# @measurement.links.should == {}
|
72
|
-
# end
|
73
|
-
|
74
67
|
end
|
75
|
-
|
68
|
+
|
76
69
|
describe "when writing data" do
|
77
|
-
|
78
70
|
before(:each) do
|
79
71
|
@measurement = Barometer::Measurement.new
|
80
72
|
end
|
81
|
-
|
73
|
+
|
82
74
|
it "only accepts Symbol for source" do
|
83
75
|
invalid_data = 1
|
84
76
|
invalid_data.class.should_not == Symbol
|
85
77
|
lambda { @measurement.source = invalid_data }.should raise_error(ArgumentError)
|
86
|
-
|
78
|
+
|
87
79
|
valid_data = :valid
|
88
80
|
valid_data.class.should == Symbol
|
89
81
|
lambda { @measurement.source = valid_data }.should_not raise_error(ArgumentError)
|
90
82
|
end
|
91
|
-
|
83
|
+
|
92
84
|
it "only accepts Time for utc_time_stamp" do
|
93
85
|
invalid_data = 1
|
94
86
|
invalid_data.class.should_not == Time
|
95
87
|
lambda { @measurement.utc_time_stamp = invalid_data }.should raise_error(ArgumentError)
|
96
|
-
|
88
|
+
|
97
89
|
valid_data = Time.now.utc
|
98
90
|
valid_data.class.should == Time
|
99
91
|
lambda { @measurement.utc_time_stamp = valid_data }.should_not raise_error(ArgumentError)
|
100
92
|
end
|
101
|
-
|
93
|
+
|
102
94
|
it "only accepts Measurement::Result for current" do
|
103
95
|
invalid_data = "invalid"
|
104
96
|
invalid_data.class.should_not == Barometer::Measurement::Result
|
105
97
|
lambda { @measurement.current = invalid_data }.should raise_error(ArgumentError)
|
106
|
-
|
98
|
+
|
107
99
|
valid_data = Barometer::Measurement::Result.new
|
108
100
|
valid_data.class.should == Barometer::Measurement::Result
|
109
101
|
lambda { @measurement.current = valid_data }.should_not raise_error(ArgumentError)
|
110
102
|
end
|
111
|
-
|
103
|
+
|
112
104
|
it "only accepts Data::ResultArray for forecast" do
|
113
105
|
invalid_data = 1
|
114
106
|
invalid_data.class.should_not == Barometer::Measurement::ResultArray
|
115
107
|
lambda { @measurement.forecast = invalid_data }.should raise_error(ArgumentError)
|
116
|
-
|
108
|
+
|
117
109
|
valid_data = Barometer::Measurement::ResultArray.new
|
118
110
|
valid_data.class.should == Barometer::Measurement::ResultArray
|
119
111
|
lambda { @measurement.forecast = valid_data }.should_not raise_error(ArgumentError)
|
120
112
|
end
|
121
|
-
|
113
|
+
|
122
114
|
it "only accepts Data::Zone for timezone" do
|
123
115
|
invalid_data = 1
|
124
116
|
invalid_data.class.should_not == Data::Zone
|
125
117
|
lambda { @measurement.timezone = invalid_data }.should raise_error(ArgumentError)
|
126
|
-
|
118
|
+
|
127
119
|
valid_data = Data::Zone.new("Europe/Paris")
|
128
120
|
valid_data.class.should == Data::Zone
|
129
121
|
lambda { @measurement.timezone = valid_data }.should_not raise_error(ArgumentError)
|
130
122
|
end
|
131
|
-
|
123
|
+
|
132
124
|
it "only accepts Data::Location for station" do
|
133
125
|
invalid_data = 1
|
134
126
|
invalid_data.class.should_not == Data::Location
|
135
127
|
lambda { @measurement.station = invalid_data }.should raise_error(ArgumentError)
|
136
|
-
|
128
|
+
|
137
129
|
valid_data = Data::Location.new
|
138
130
|
valid_data.class.should == Data::Location
|
139
131
|
lambda { @measurement.station = valid_data }.should_not raise_error(ArgumentError)
|
140
132
|
end
|
141
|
-
|
133
|
+
|
142
134
|
it "only accepts Data::Location for location" do
|
143
135
|
invalid_data = 1
|
144
136
|
invalid_data.class.should_not == Data::Location
|
145
137
|
lambda { @measurement.location = invalid_data }.should raise_error(ArgumentError)
|
146
|
-
|
138
|
+
|
147
139
|
valid_data = Data::Location.new
|
148
140
|
valid_data.class.should == Data::Location
|
149
141
|
lambda { @measurement.location = valid_data }.should_not raise_error(ArgumentError)
|
150
142
|
end
|
151
|
-
|
143
|
+
|
152
144
|
it "only accepts Fixnum for weight" do
|
153
145
|
invalid_data = "test"
|
154
146
|
invalid_data.class.should_not == Fixnum
|
155
147
|
lambda { @measurement.weight = invalid_data }.should raise_error(ArgumentError)
|
156
|
-
|
148
|
+
|
157
149
|
valid_data = 1
|
158
150
|
valid_data.class.should == Fixnum
|
159
151
|
lambda { @measurement.weight = valid_data }.should_not raise_error(ArgumentError)
|
160
152
|
end
|
161
|
-
|
153
|
+
|
162
154
|
it "only accepts Array for links" do
|
163
155
|
invalid_data = 1
|
164
156
|
invalid_data.class.should_not == Hash
|
165
157
|
lambda { @measurement.links = invalid_data }.should raise_error(ArgumentError)
|
166
|
-
|
158
|
+
|
167
159
|
valid_data = {1 => nil}
|
168
160
|
valid_data.class.should == Hash
|
169
161
|
lambda { @measurement.links = valid_data }.should_not raise_error(ArgumentError)
|
170
162
|
end
|
171
|
-
|
163
|
+
|
172
164
|
it "only accepts Data::LocalTime for measured_at" do
|
173
165
|
invalid_data = 1
|
174
166
|
invalid_data.class.should_not == Data::LocalTime
|
175
167
|
lambda { @measurement.measured_at = invalid_data }.should raise_error(ArgumentError)
|
176
|
-
|
168
|
+
|
177
169
|
valid_data = Data::LocalTime.new
|
178
170
|
valid_data.class.should == Data::LocalTime
|
179
171
|
lambda { @measurement.measured_at = valid_data }.should_not raise_error(ArgumentError)
|
180
172
|
end
|
181
|
-
|
182
173
|
end
|
183
|
-
|
174
|
+
|
184
175
|
describe "and the helpers" do
|
185
|
-
|
186
176
|
before(:each) do
|
187
177
|
@measurement = Barometer::Measurement.new
|
188
178
|
end
|
189
|
-
|
179
|
+
|
190
180
|
it "changes state to successful (if successful)" do
|
191
181
|
@measurement.success.should be_false
|
192
182
|
@measurement.success!
|
193
183
|
@measurement.utc_time_stamp.should be_nil
|
194
184
|
@measurement.current.should be_nil
|
195
185
|
@measurement.success.should be_false
|
196
|
-
|
186
|
+
|
197
187
|
@measurement.current = Barometer::Measurement::Result.new
|
198
188
|
@measurement.current.temperature = Data::Temperature.new
|
199
189
|
@measurement.current.temperature.c = 10
|
@@ -201,7 +191,7 @@ describe "Measurement" do
|
|
201
191
|
@measurement.success!
|
202
192
|
@measurement.success.should be_true
|
203
193
|
end
|
204
|
-
|
194
|
+
|
205
195
|
it "returns successful state" do
|
206
196
|
@measurement.current = Barometer::Measurement::Result.new
|
207
197
|
@measurement.current.temperature = Data::Temperature.new
|
@@ -210,50 +200,32 @@ describe "Measurement" do
|
|
210
200
|
@measurement.success.should be_true
|
211
201
|
@measurement.success?.should be_true
|
212
202
|
end
|
213
|
-
|
203
|
+
|
214
204
|
it "returns non-successful state" do
|
215
205
|
@measurement.success.should be_false
|
216
206
|
@measurement.success?.should be_false
|
217
207
|
end
|
218
|
-
|
208
|
+
|
219
209
|
it "stamps the utc_time_stamp" do
|
220
210
|
@measurement.utc_time_stamp.should be_nil
|
221
211
|
@measurement.stamp!
|
222
212
|
@measurement.utc_time_stamp.should_not be_nil
|
223
213
|
end
|
224
|
-
|
214
|
+
|
225
215
|
it "indicates if current" do
|
226
216
|
@measurement.current.should be_nil
|
227
217
|
@measurement.current?.should be_true
|
228
|
-
|
218
|
+
|
229
219
|
@measurement.current = Barometer::Measurement::Result.new
|
230
220
|
@measurement.current.current_at.should be_nil
|
231
221
|
@measurement.current?.should be_true
|
232
|
-
|
222
|
+
|
233
223
|
@measurement.current.current_at = Data::LocalTime.new(9,0,0)
|
234
224
|
@measurement.current?.should be_true
|
235
225
|
@measurement.current?("9:00 am").should be_true
|
236
|
-
|
237
|
-
|
238
|
-
end
|
239
|
-
|
240
|
-
|
241
|
-
# it "indicates if current" do
|
242
|
-
# #@measurement.time.should be_nil
|
243
|
-
# @measurement.current?.should be_false
|
244
|
-
# @measurement.stamp!
|
245
|
-
# @measurement.time.should_not be_nil
|
246
|
-
# @measurement.current?.should be_true
|
247
|
-
#
|
248
|
-
# @measurement.time -= (60*60*3)
|
249
|
-
# @measurement.current?.should be_true
|
250
|
-
#
|
251
|
-
# @measurement.time -= (60*60*5)
|
252
|
-
# @measurement.current?.should be_false
|
253
|
-
# end
|
254
|
-
|
255
|
-
describe "changing units" do
|
226
|
+
end
|
256
227
|
|
228
|
+
describe "changing units" do
|
257
229
|
before(:each) do
|
258
230
|
@measurement = Barometer::Measurement.new
|
259
231
|
end
|
@@ -278,16 +250,13 @@ describe "Measurement" do
|
|
278
250
|
@measurement.metric!
|
279
251
|
@measurement.metric?.should be_true
|
280
252
|
end
|
281
|
-
|
282
253
|
end
|
283
|
-
|
284
254
|
end
|
285
|
-
|
255
|
+
|
286
256
|
describe "when searching forecasts using 'for'" do
|
287
|
-
|
288
257
|
before(:each) do
|
289
258
|
@measurement = Barometer::Measurement.new
|
290
|
-
|
259
|
+
|
291
260
|
# create a measurement object with a result array that includes
|
292
261
|
# dates for 4 consecutive days starting with tommorrow
|
293
262
|
@measurement.forecast = Barometer::Measurement::ResultArray.new
|
@@ -297,139 +266,116 @@ describe "Measurement" do
|
|
297
266
|
@measurement.forecast << forecast_measurement
|
298
267
|
end
|
299
268
|
@measurement.forecast.size.should == 4
|
300
|
-
|
269
|
+
|
301
270
|
@tommorrow = (Time.now + (60 * 60 * 24))
|
302
271
|
end
|
303
|
-
|
272
|
+
|
304
273
|
it "returns nil when there are no forecasts" do
|
305
274
|
@measurement.forecast = Barometer::Measurement::ResultArray.new
|
306
275
|
@measurement.forecast.size.should == 0
|
307
276
|
@measurement.for.should be_nil
|
308
277
|
end
|
309
|
-
|
278
|
+
|
310
279
|
it "finds the date using a String" do
|
311
280
|
tommorrow = @tommorrow.to_s
|
312
281
|
tommorrow.class.should == String
|
313
282
|
@measurement.for(tommorrow).should == @measurement.forecast.first
|
314
283
|
end
|
315
|
-
|
284
|
+
|
316
285
|
it "finds the date using a Date" do
|
317
286
|
tommorrow = Date.parse(@tommorrow.to_s)
|
318
287
|
tommorrow.class.should == Date
|
319
288
|
@measurement.for(tommorrow).should == @measurement.forecast.first
|
320
289
|
end
|
321
|
-
|
290
|
+
|
322
291
|
it "finds the date using a DateTime" do
|
323
292
|
tommorrow = DateTime.parse(@tommorrow.to_s)
|
324
293
|
tommorrow.class.should == DateTime
|
325
294
|
@measurement.for(tommorrow).should == @measurement.forecast.first
|
326
295
|
end
|
327
|
-
|
296
|
+
|
328
297
|
it "finds the date using a Time" do
|
329
298
|
@tommorrow.class.should == Time
|
330
299
|
@measurement.for(@tommorrow).should == @measurement.forecast.first
|
331
300
|
end
|
332
|
-
|
301
|
+
|
333
302
|
it "fidns the date using Data::LocalDateTime" do
|
334
303
|
tommorrow = Data::LocalDateTime.parse(@tommorrow.to_s)
|
335
304
|
tommorrow.class.should == Data::LocalDateTime
|
336
305
|
@measurement.for(tommorrow).should == @measurement.forecast.first
|
337
306
|
end
|
338
|
-
|
307
|
+
|
339
308
|
it "finds nothing when there is not a match" do
|
340
309
|
yesterday = (Time.now - (60 * 60 * 24))
|
341
310
|
yesterday.class.should == Time
|
342
311
|
@measurement.for(yesterday).should be_nil
|
343
312
|
end
|
344
|
-
|
345
313
|
end
|
346
|
-
|
314
|
+
|
347
315
|
describe "when answering the simple questions," do
|
348
|
-
|
349
316
|
before(:each) do
|
350
317
|
@measurement = Barometer::Measurement.new(:wunderground)
|
351
318
|
@measurement.current = Barometer::Measurement::Result.new
|
352
319
|
@now = Data::LocalDateTime.parse("2009-05-01 2:05 pm")
|
353
320
|
end
|
354
|
-
|
355
|
-
# def windy?(time_string=nil, threshold=10)
|
356
|
-
# local_time = Data::LocalTime.parse(time_string)
|
357
|
-
# if current?(local_time)
|
358
|
-
# return nil unless current
|
359
|
-
# current.windy?(threshold)
|
360
|
-
# else
|
361
|
-
# return nil unless forecast && (future = forecast[local_time])
|
362
|
-
# future.windy?(threshold)
|
363
|
-
# end
|
364
|
-
# end
|
365
|
-
|
321
|
+
|
366
322
|
describe "windy?" do
|
367
|
-
|
368
323
|
it "returns true if a current_measurement returns true" do
|
369
|
-
@measurement.current.
|
324
|
+
@measurement.current.stub(:windy? => true)
|
370
325
|
@measurement.windy?.should be_true
|
371
326
|
end
|
372
|
-
|
327
|
+
|
373
328
|
it "returns false if a current_measurement returns false" do
|
374
|
-
@measurement.current.
|
329
|
+
@measurement.current.stub(:windy? => false)
|
375
330
|
@measurement.windy?.should be_false
|
376
331
|
end
|
377
|
-
|
378
332
|
end
|
379
|
-
|
333
|
+
|
380
334
|
describe "wet?" do
|
381
|
-
|
382
335
|
it "returns true if the current_measurement returns true" do
|
383
|
-
@measurement.current.
|
336
|
+
@measurement.current.stub(:wet? => true)
|
384
337
|
@measurement.wet?.should be_true
|
385
338
|
end
|
386
|
-
|
339
|
+
|
387
340
|
it "returns false if the current_measurement returns false" do
|
388
|
-
@measurement.current.
|
341
|
+
@measurement.current.stub(:wet? => false)
|
389
342
|
@measurement.wet?.should be_false
|
390
343
|
end
|
391
|
-
|
392
344
|
end
|
393
|
-
|
345
|
+
|
394
346
|
describe "day?" do
|
395
|
-
|
396
347
|
it "returns true if the current_measurement returns true" do
|
397
|
-
@measurement.current.
|
348
|
+
@measurement.current.stub(:day? => true)
|
398
349
|
@measurement.day?.should be_true
|
399
350
|
end
|
400
|
-
|
351
|
+
|
401
352
|
it "returns false if the current_measurement returns false" do
|
402
|
-
@measurement.current.
|
353
|
+
@measurement.current.stub(:day? => false)
|
403
354
|
@measurement.day?.should be_false
|
404
355
|
end
|
405
|
-
|
406
356
|
end
|
407
|
-
|
357
|
+
|
408
358
|
describe "sunny?" do
|
409
|
-
|
410
359
|
it "returns true if the current_measurement returns true and day" do
|
411
|
-
@measurement.current.
|
412
|
-
@measurement.current.
|
360
|
+
@measurement.current.stub(:day? => true)
|
361
|
+
@measurement.current.stub(:sunny? => true)
|
413
362
|
@measurement.day?.should be_true
|
414
363
|
@measurement.sunny?.should be_true
|
415
364
|
end
|
416
|
-
|
365
|
+
|
417
366
|
it "returns false if the current_measurement returns false and day" do
|
418
|
-
@measurement.current.
|
419
|
-
@measurement.current.
|
367
|
+
@measurement.current.stub(:day? => true)
|
368
|
+
@measurement.current.stub(:sunny? => false)
|
420
369
|
@measurement.day?.should be_true
|
421
370
|
@measurement.sunny?.should be_false
|
422
371
|
end
|
423
|
-
|
372
|
+
|
424
373
|
it "returns false if night time" do
|
425
|
-
@measurement.current.
|
426
|
-
@measurement.current.
|
374
|
+
@measurement.current.stub(:day? => false)
|
375
|
+
@measurement.current.stub(:sunny? => true)
|
427
376
|
@measurement.day?.should be_false
|
428
377
|
@measurement.sunny?.should be_false
|
429
378
|
end
|
430
|
-
|
431
379
|
end
|
432
|
-
|
433
380
|
end
|
434
|
-
|
435
381
|
end
|