attack-barometer 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/README.rdoc +51 -9
  2. data/VERSION.yml +1 -1
  3. data/bin/barometer +57 -7
  4. data/lib/barometer/base.rb +3 -0
  5. data/lib/barometer/data/sun.rb +10 -0
  6. data/lib/barometer/data/zone.rb +79 -188
  7. data/lib/barometer/data.rb +11 -6
  8. data/lib/barometer/formats/coordinates.rb +4 -1
  9. data/lib/barometer/formats/geocode.rb +9 -7
  10. data/lib/barometer/formats/icao.rb +2 -2
  11. data/lib/barometer/formats/weather_id.rb +2 -2
  12. data/lib/barometer/measurements/common.rb +113 -0
  13. data/lib/barometer/{data → measurements}/current.rb +17 -42
  14. data/lib/barometer/measurements/forecast.rb +62 -0
  15. data/lib/barometer/measurements/forecast_array.rb +72 -0
  16. data/lib/barometer/{data → measurements}/measurement.rb +57 -45
  17. data/lib/barometer/measurements/night.rb +27 -0
  18. data/lib/barometer/query.rb +55 -5
  19. data/lib/barometer/services.rb +3 -1
  20. data/lib/barometer/translations/zone_codes.yml +360 -0
  21. data/lib/barometer/weather.rb +5 -4
  22. data/lib/barometer/weather_services/google.rb +19 -35
  23. data/lib/barometer/weather_services/service.rb +113 -255
  24. data/lib/barometer/weather_services/weather_bug.rb +291 -2
  25. data/lib/barometer/weather_services/weather_dot_com.rb +45 -54
  26. data/lib/barometer/weather_services/wunderground.rb +83 -89
  27. data/lib/barometer/weather_services/yahoo.rb +44 -91
  28. data/lib/barometer/web_services/geocode.rb +1 -0
  29. data/lib/barometer/web_services/timezone.rb +40 -0
  30. data/lib/barometer/web_services/weather_id.rb +17 -2
  31. data/lib/barometer.rb +11 -0
  32. data/lib/demometer/demometer.rb +28 -0
  33. data/lib/demometer/public/css/master.css +259 -1
  34. data/lib/demometer/views/index.erb +2 -0
  35. data/lib/demometer/views/layout.erb +3 -2
  36. data/lib/demometer/views/measurement.erb +4 -1
  37. data/lib/demometer/views/readme.erb +116 -88
  38. data/spec/data/sun_spec.rb +53 -0
  39. data/spec/data/zone_spec.rb +330 -100
  40. data/spec/fixtures/formats/weather_id/ksfo.xml +1 -0
  41. data/spec/fixtures/services/weather_bug/90210_current.xml +1 -0
  42. data/spec/fixtures/services/weather_bug/90210_forecast.xml +1 -0
  43. data/spec/formats/weather_id_spec.rb +10 -5
  44. data/spec/measurements/common_spec.rb +352 -0
  45. data/spec/{data → measurements}/current_spec.rb +40 -103
  46. data/spec/measurements/forecast_array_spec.rb +165 -0
  47. data/spec/measurements/forecast_spec.rb +135 -0
  48. data/spec/{data → measurements}/measurement_spec.rb +86 -107
  49. data/spec/measurements/night_measurement_spec.rb +49 -0
  50. data/spec/query_spec.rb +12 -2
  51. data/spec/spec_helper.rb +28 -1
  52. data/spec/weather_services/google_spec.rb +27 -117
  53. data/spec/weather_services/services_spec.rb +49 -1024
  54. data/spec/weather_services/weather_bug_spec.rb +274 -0
  55. data/spec/weather_services/weather_dot_com_spec.rb +45 -125
  56. data/spec/weather_services/wunderground_spec.rb +42 -136
  57. data/spec/weather_services/yahoo_spec.rb +26 -116
  58. data/spec/weather_spec.rb +45 -45
  59. metadata +23 -11
  60. data/lib/barometer/data/forecast.rb +0 -84
  61. data/lib/barometer/data/night.rb +0 -69
  62. data/lib/barometer/extensions/graticule.rb +0 -51
  63. data/spec/data/forecast_spec.rb +0 -192
  64. data/spec/data/night_measurement_spec.rb +0 -136
@@ -1,192 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Forecast Measurement" do
4
-
5
- describe "when initialized" do
6
-
7
- before(:each) do
8
- @forecast = Data::ForecastMeasurement.new
9
- end
10
-
11
- it "responds to date" do
12
- @forecast.date.should be_nil
13
- end
14
-
15
- it "responds to icon" do
16
- @forecast.icon.should be_nil
17
- end
18
-
19
- it "responds to condition" do
20
- @forecast.condition.should be_nil
21
- end
22
-
23
- it "responds to low" do
24
- @forecast.low.should be_nil
25
- end
26
-
27
- it "responds to high" do
28
- @forecast.high.should be_nil
29
- end
30
-
31
- it "responds to pop" do
32
- @forecast.pop.should be_nil
33
- end
34
-
35
- it "responds to humidity" do
36
- @forecast.humidity.should be_nil
37
- end
38
-
39
- it "responds to wind" do
40
- @forecast.wind.should be_nil
41
- end
42
-
43
- it "responds to sun" do
44
- @forecast.sun.should be_nil
45
- end
46
-
47
- it "responds to night" do
48
- @forecast.night.should be_nil
49
- end
50
-
51
- end
52
-
53
- describe "when writing data" do
54
-
55
- before(:each) do
56
- @forecast = Data::ForecastMeasurement.new
57
- end
58
-
59
- it "only accepts Date for date" do
60
- invalid_data = 1
61
- invalid_data.class.should_not == Date
62
- lambda { @forecast.date = invalid_data }.should raise_error(ArgumentError)
63
-
64
- valid_data = Date.new
65
- valid_data.class.should == Date
66
- lambda { @forecast.date = valid_data }.should_not raise_error(ArgumentError)
67
- end
68
-
69
- it "only accepts String for icon" do
70
- invalid_data = 1
71
- invalid_data.class.should_not == String
72
- lambda { @forecast.icon = invalid_data }.should raise_error(ArgumentError)
73
-
74
- valid_data = "valid"
75
- valid_data.class.should == String
76
- lambda { @forecast.icon = valid_data }.should_not raise_error(ArgumentError)
77
- end
78
-
79
- it "only accepts String for condition" do
80
- invalid_data = 1
81
- invalid_data.class.should_not == String
82
- lambda { @forecast.condition = invalid_data }.should raise_error(ArgumentError)
83
-
84
- valid_data = "valid"
85
- valid_data.class.should == String
86
- lambda { @forecast.condition = valid_data }.should_not raise_error(ArgumentError)
87
- end
88
-
89
- it "only accepts Data::Temperature for high" do
90
- invalid_data = 1
91
- invalid_data.class.should_not == Data::Temperature
92
- lambda { @forecast.high = invalid_data }.should raise_error(ArgumentError)
93
-
94
- valid_data = Data::Temperature.new
95
- valid_data.class.should == Data::Temperature
96
- lambda { @forecast.high = valid_data }.should_not raise_error(ArgumentError)
97
- end
98
-
99
- it "only accepts Data::Temperature for low" do
100
- invalid_data = 1
101
- invalid_data.class.should_not == Data::Temperature
102
- lambda { @forecast.low = invalid_data }.should raise_error(ArgumentError)
103
-
104
- valid_data = Data::Temperature.new
105
- valid_data.class.should == Data::Temperature
106
- lambda { @forecast.low = valid_data }.should_not raise_error(ArgumentError)
107
- end
108
-
109
- it "only accepts Fixnum for pop" do
110
- invalid_data = "test"
111
- invalid_data.class.should_not == Fixnum
112
- lambda { @forecast.pop = invalid_data }.should raise_error(ArgumentError)
113
-
114
- valid_data = 50
115
- valid_data.class.should == Fixnum
116
- lambda { @forecast.pop = valid_data }.should_not raise_error(ArgumentError)
117
- end
118
-
119
- it "only accepts Data::Speed for wind" do
120
- invalid_data = "test"
121
- invalid_data.class.should_not == Data::Speed
122
- lambda { @forecast.wind = invalid_data }.should raise_error(ArgumentError)
123
-
124
- valid_data = Data::Speed.new
125
- valid_data.class.should == Data::Speed
126
- lambda { @forecast.wind = valid_data }.should_not raise_error(ArgumentError)
127
- end
128
-
129
- it "only accepts Fixnum for humidity" do
130
- invalid_data = "test"
131
- invalid_data.class.should_not == Fixnum
132
- lambda { @forecast.humidity = invalid_data }.should raise_error(ArgumentError)
133
-
134
- valid_data = 50
135
- valid_data.class.should == Fixnum
136
- lambda { @forecast.humidity = valid_data }.should_not raise_error(ArgumentError)
137
- end
138
-
139
- it "only accepts Data::Sun for sun" do
140
- invalid_data = 1
141
- invalid_data.class.should_not == Data::Sun
142
- lambda { @forecast.sun = invalid_data }.should raise_error(ArgumentError)
143
-
144
- valid_data = Data::Sun.new
145
- valid_data.class.should == Data::Sun
146
- lambda { @forecast.sun = valid_data }.should_not raise_error(ArgumentError)
147
- end
148
-
149
- it "only accepts Data::NightMeasurement for sun" do
150
- invalid_data = 1
151
- invalid_data.class.should_not == Data::NightMeasurement
152
- lambda { @forecast.night = invalid_data }.should raise_error(ArgumentError)
153
-
154
- valid_data = Data::NightMeasurement.new
155
- valid_data.class.should == Data::NightMeasurement
156
- lambda { @forecast.night = valid_data }.should_not raise_error(ArgumentError)
157
- end
158
-
159
- end
160
-
161
- describe "method missing" do
162
-
163
- before(:each) do
164
- @forecast = Data::ForecastMeasurement.new
165
- end
166
-
167
- it "responds to method + ?" do
168
- valid_method = "pop"
169
- @forecast.respond_to?(valid_method).should be_true
170
- lambda { @forecast.send(valid_method + "?") }.should_not raise_error(NoMethodError)
171
- end
172
-
173
- it "ignores non_method + ?" do
174
- invalid_method = "humid"
175
- @forecast.respond_to?(invalid_method).should be_false
176
- lambda { @forecast.send(invalid_method + "?") }.should raise_error(NoMethodError)
177
- end
178
-
179
- it "returns true if set" do
180
- @forecast.pop = 10
181
- @forecast.pop.should_not be_nil
182
- @forecast.pop?.should be_true
183
- end
184
-
185
- it "returns false if not set" do
186
- @forecast.pop.should be_nil
187
- @forecast.pop?.should be_false
188
- end
189
-
190
- end
191
-
192
- end
@@ -1,136 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Forecasted Night Measurement" do
4
-
5
- describe "when initialized" do
6
-
7
- before(:each) do
8
- @night = Data::NightMeasurement.new
9
- end
10
-
11
- it "responds to date" do
12
- @night.date.should be_nil
13
- end
14
-
15
- it "responds to icon" do
16
- @night.icon.should be_nil
17
- end
18
-
19
- it "responds to condition" do
20
- @night.condition.should be_nil
21
- end
22
-
23
- it "responds to pop" do
24
- @night.pop.should be_nil
25
- end
26
-
27
- it "responds to humidity" do
28
- @night.humidity.should be_nil
29
- end
30
-
31
- it "responds to wind" do
32
- @night.wind.should be_nil
33
- end
34
-
35
- end
36
-
37
- describe "when writing data" do
38
-
39
- before(:each) do
40
- @night = Data::NightMeasurement.new
41
- end
42
-
43
- it "only accepts Date for date" do
44
- invalid_data = 1
45
- invalid_data.class.should_not == Date
46
- lambda { @night.date = invalid_data }.should raise_error(ArgumentError)
47
-
48
- valid_data = Date.new
49
- valid_data.class.should == Date
50
- lambda { @night.date = valid_data }.should_not raise_error(ArgumentError)
51
- end
52
-
53
- it "only accepts String for icon" do
54
- invalid_data = 1
55
- invalid_data.class.should_not == String
56
- lambda { @night.icon = invalid_data }.should raise_error(ArgumentError)
57
-
58
- valid_data = "valid"
59
- valid_data.class.should == String
60
- lambda { @night.icon = valid_data }.should_not raise_error(ArgumentError)
61
- end
62
-
63
- it "only accepts String for condition" do
64
- invalid_data = 1
65
- invalid_data.class.should_not == String
66
- lambda { @night.condition = invalid_data }.should raise_error(ArgumentError)
67
-
68
- valid_data = "valid"
69
- valid_data.class.should == String
70
- lambda { @night.condition = valid_data }.should_not raise_error(ArgumentError)
71
- end
72
-
73
- it "only accepts Fixnum for pop" do
74
- invalid_data = "test"
75
- invalid_data.class.should_not == Fixnum
76
- lambda { @night.pop = invalid_data }.should raise_error(ArgumentError)
77
-
78
- valid_data = 50
79
- valid_data.class.should == Fixnum
80
- lambda { @night.pop = valid_data }.should_not raise_error(ArgumentError)
81
- end
82
-
83
- it "only accepts Data::Speed for wind" do
84
- invalid_data = "test"
85
- invalid_data.class.should_not == Data::Speed
86
- lambda { @night.wind = invalid_data }.should raise_error(ArgumentError)
87
-
88
- valid_data = Data::Speed.new
89
- valid_data.class.should == Data::Speed
90
- lambda { @night.wind = valid_data }.should_not raise_error(ArgumentError)
91
- end
92
-
93
- it "only accepts Fixnum for humidity" do
94
- invalid_data = "test"
95
- invalid_data.class.should_not == Fixnum
96
- lambda { @night.humidity = invalid_data }.should raise_error(ArgumentError)
97
-
98
- valid_data = 50
99
- valid_data.class.should == Fixnum
100
- lambda { @night.humidity = valid_data }.should_not raise_error(ArgumentError)
101
- end
102
-
103
- end
104
-
105
- describe "method missing" do
106
-
107
- before(:each) do
108
- @night = Data::NightMeasurement.new
109
- end
110
-
111
- it "responds to method + ?" do
112
- valid_method = "pop"
113
- @night.respond_to?(valid_method).should be_true
114
- lambda { @night.send(valid_method + "?") }.should_not raise_error(NoMethodError)
115
- end
116
-
117
- it "ignores non_method + ?" do
118
- invalid_method = "humid"
119
- @night.respond_to?(invalid_method).should be_false
120
- lambda { @night.send(invalid_method + "?") }.should raise_error(NoMethodError)
121
- end
122
-
123
- it "returns true if set" do
124
- @night.pop = 10
125
- @night.pop.should_not be_nil
126
- @night.pop?.should be_true
127
- end
128
-
129
- it "returns false if not set" do
130
- @night.pop.should be_nil
131
- @night.pop?.should be_false
132
- end
133
-
134
- end
135
-
136
- end