@@ -71,8 +71,16 @@ module Agents |
||
| 71 | 71 |
'expected_update_period_in_days' => '2' |
| 72 | 72 |
} |
| 73 | 73 |
end |
| 74 |
+ |
|
| 75 |
+ def check |
|
| 76 |
+ if key_setup? |
|
| 77 |
+ create_event :payload => model(weather_provider, which_day).merge('location' => location)
|
|
| 78 |
+ end |
|
| 79 |
+ end |
|
| 74 | 80 |
|
| 75 |
- def service |
|
| 81 |
+ private |
|
| 82 |
+ |
|
| 83 |
+ def weather_provider |
|
| 76 | 84 |
interpolated["service"].presence || "wunderground" |
| 77 | 85 |
end |
| 78 | 86 |
|
@@ -85,8 +93,7 @@ module Agents |
||
| 85 | 93 |
end |
| 86 | 94 |
|
| 87 | 95 |
def validate_options |
| 88 |
- errors.add(:base, "service is required") unless service.present? |
|
| 89 |
- errors.add(:base, "service must be set to 'forecastio' or 'wunderground'") unless ["forecastio", "wunderground"].include?(service) |
|
| 96 |
+ errors.add(:base, "service must be set to 'forecastio' or 'wunderground'") unless ["forecastio", "wunderground"].include?(weather_provider) |
|
| 90 | 97 |
errors.add(:base, "location is required") unless location.present? |
| 91 | 98 |
errors.add(:base, "api_key is required") unless key_setup? |
| 92 | 99 |
errors.add(:base, "which_day selection is required") unless which_day.present? |
@@ -104,10 +111,10 @@ module Agents |
||
| 104 | 111 |
end |
| 105 | 112 |
end |
| 106 | 113 |
|
| 107 |
- def model(service,which_day) |
|
| 108 |
- if service == "wunderground" |
|
| 114 |
+ def model(weather_provider,which_day) |
|
| 115 |
+ if weather_provider == "wunderground" |
|
| 109 | 116 |
wunderground[which_day] |
| 110 |
- elsif service == "forecastio" |
|
| 117 |
+ elsif weather_provider == "forecastio" |
|
| 111 | 118 |
forecastio.each do |value| |
| 112 | 119 |
timestamp = Time.at(value.time) |
| 113 | 120 |
if (timestamp.to_date - Time.now.to_date).to_i == which_day |
@@ -174,12 +181,5 @@ module Agents |
||
| 174 | 181 |
end |
| 175 | 182 |
end |
| 176 | 183 |
end |
| 177 |
- |
|
| 178 |
- def check |
|
| 179 |
- if key_setup? |
|
| 180 |
- create_event :payload => model(service, which_day).merge('location' => location)
|
|
| 181 |
- end |
|
| 182 |
- end |
|
| 183 |
- |
|
| 184 | 184 |
end |
| 185 | 185 |
end |
@@ -0,0 +1,28 @@ |
||
| 1 |
+require 'spec_helper' |
|
| 2 |
+ |
|
| 3 |
+describe Agents::WeatherAgent do |
|
| 4 |
+ let(:agent) do |
|
| 5 |
+ Agents::WeatherAgent.create( |
|
| 6 |
+ name: 'weather', |
|
| 7 |
+ options: {
|
|
| 8 |
+ :location => 94103, |
|
| 9 |
+ :lat => 37.779329, |
|
| 10 |
+ :lng => -122.41915, |
|
| 11 |
+ :api_key => 'test' |
|
| 12 |
+ } |
|
| 13 |
+ ).tap do |agent| |
|
| 14 |
+ agent.user = users(:bob) |
|
| 15 |
+ agent.save! |
|
| 16 |
+ end |
|
| 17 |
+ end |
|
| 18 |
+ |
|
| 19 |
+ it "creates a valid agent" do |
|
| 20 |
+ expect(agent).to be_valid |
|
| 21 |
+ end |
|
| 22 |
+ |
|
| 23 |
+ describe "#service" do |
|
| 24 |
+ it "doesn't have a Service object attached" do |
|
| 25 |
+ expect(agent.service).to be_nil |
|
| 26 |
+ end |
|
| 27 |
+ end |
|
| 28 |
+end |