weatherzone 0.6.3 → 0.6.5
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/lib/weatherzone.rb +1 -1
- data/lib/weatherzone/connection.rb +12 -11
- data/test/test_exceptions.rb +43 -0
- data/test/test_helper.rb +1 -32
- metadata +4 -3
data/lib/weatherzone.rb
CHANGED
@@ -3,9 +3,10 @@ require 'singleton'
|
|
3
3
|
module Weatherzone
|
4
4
|
|
5
5
|
class RequestFailed < Exception
|
6
|
-
attr_reader :message
|
7
|
-
def initialize(url)
|
8
|
-
@message
|
6
|
+
attr_reader :message, :original_exception
|
7
|
+
def initialize(url, original_exception)
|
8
|
+
@message = "Failed to retreive #{url} and no cached version available"
|
9
|
+
@original_exception = original_exception
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
@@ -64,22 +65,22 @@ module Weatherzone
|
|
64
65
|
response = OpenURI::open(url)
|
65
66
|
response.read
|
66
67
|
end
|
67
|
-
rescue Timeout::Error, SocketError
|
68
|
-
error("webservice connection failed")
|
69
|
-
raise RequestFailed.new(url)
|
68
|
+
rescue Timeout::Error, SocketError => e
|
69
|
+
error("webservice connection failed #{e}")
|
70
|
+
raise RequestFailed.new(url, e)
|
70
71
|
end
|
71
72
|
|
72
|
-
def debug(message)
|
73
|
-
@logger.debug("[weatherzone] #{message}") if @logger
|
73
|
+
def debug(message)
|
74
|
+
@logger.debug("[weatherzone] [DEBUG] #{message}") if @logger
|
74
75
|
end
|
75
76
|
|
76
77
|
def info(message)
|
77
|
-
@logger.info("[weatherzone] #{message}") if @logger
|
78
|
+
@logger.info("[weatherzone] [INFO] #{message}") if @logger
|
78
79
|
end
|
79
80
|
|
80
81
|
def error(message)
|
81
|
-
@logger.error("[weatherzone] #{message}") if @logger
|
82
|
+
@logger.error("[weatherzone] [ERROR] #{message}") if @logger
|
82
83
|
end
|
83
|
-
|
84
|
+
|
84
85
|
end
|
85
86
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/support/dependencies.rb'
|
2
|
+
|
3
|
+
class TestExceptions < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
Weatherzone::Connection.connect(ENV['WZ_USER'], ENV['WZ_PASS'], :url => ENV['WZ_URL'], :timeout_after => 10) do
|
7
|
+
eval(File.open(File.dirname(__FILE__) + '/../.wzkey.rb', 'r').read)
|
8
|
+
end
|
9
|
+
@connection = Weatherzone::Connection.instance
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_should_have_credentials
|
13
|
+
assert ENV['WZ_USER'], "You need to set the WZ_USER environment variable to run these tests"
|
14
|
+
assert ENV['WZ_PASS'], "You need to set the WZ_PASS environment variable to run these tests"
|
15
|
+
assert ENV['WZ_URL'], "You need to set the WZ_URL environment variable to run these tests"
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_should_have_keygen
|
19
|
+
File.open(File.dirname(__FILE__) + '/../.wzkey.rb', 'r')
|
20
|
+
rescue Exception
|
21
|
+
assert false, "You need to create #{File.dirname(__FILE__) + '/../.wzkey.rb'} to run these tests"
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_request_failed_should_capture_original_exception
|
25
|
+
timeout(0.1) do
|
26
|
+
sleep(1)
|
27
|
+
end
|
28
|
+
rescue Exception => e
|
29
|
+
begin
|
30
|
+
raise Weatherzone::RequestFailed.new("url", e)
|
31
|
+
rescue Weatherzone::RequestFailed => weatherzone_exception
|
32
|
+
assert_instance_of Timeout::Error, weatherzone_exception.original_exception
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_connection_should_raise_request_failed_on_timeout
|
37
|
+
@connection.timeout_after = 0.1
|
38
|
+
assert_raises Weatherzone::RequestFailed do
|
39
|
+
Weather.find_by_location_name("Sydney")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,35 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'rubygems'
|
3
|
-
require 'mocha'
|
4
|
-
require 'logger'
|
5
|
-
require 'ruby-debug'
|
6
|
-
|
7
|
-
require File.dirname(__FILE__) + '/../lib/weatherzone'
|
8
|
-
|
9
|
-
require 'weatherzone/resources/point_forecast'
|
10
|
-
require 'weatherzone/resources/forecast'
|
11
|
-
require 'weatherzone/resources/conditions'
|
12
|
-
require 'weatherzone/resources/district_forecast'
|
13
|
-
require 'weatherzone/resources/state_forecast'
|
14
|
-
require 'weatherzone/resources/marine_summary'
|
15
|
-
require 'weatherzone/resources/marine_forecast'
|
16
|
-
require 'weatherzone/resources/surf_report'
|
17
|
-
require 'weatherzone/resources/lift'
|
18
|
-
require 'weatherzone/resources/snow_report'
|
19
|
-
require 'weatherzone/resources/historical_observation'
|
20
|
-
require 'weatherzone/resources/daily_observation'
|
21
|
-
require 'weatherzone/resources/climate_period'
|
22
|
-
require 'weatherzone/resources/warning'
|
23
|
-
require 'weatherzone/resources/image'
|
24
|
-
require 'weatherzone/resources/almanac_period'
|
25
|
-
require 'weatherzone/resources/almanac'
|
26
|
-
require 'weatherzone/resources/tide'
|
27
|
-
require 'weatherzone/resources/buoy_observation'
|
28
|
-
require 'weatherzone/resources/location'
|
29
|
-
require 'weatherzone/resources/country'
|
30
|
-
require 'weatherzone/resources/moon_phase'
|
31
|
-
require 'weatherzone/resources/news_item'
|
32
|
-
require 'weatherzone/resources/weather'
|
1
|
+
require File.dirname(__FILE__) + '/support/dependencies.rb'
|
33
2
|
|
34
3
|
class Test::Unit::TestCase
|
35
4
|
def setup
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 6
|
8
|
-
-
|
9
|
-
version: 0.6.
|
8
|
+
- 5
|
9
|
+
version: 0.6.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ben Askins
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-20 00:00:00 +10:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -137,6 +137,7 @@ test_files:
|
|
137
137
|
- test/test_country.rb
|
138
138
|
- test/test_daily_observation.rb
|
139
139
|
- test/test_district_forecast.rb
|
140
|
+
- test/test_exceptions.rb
|
140
141
|
- test/test_farenheit_conversion_factor.rb
|
141
142
|
- test/test_file_parser.rb
|
142
143
|
- test/test_finder.rb
|