yweather 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGELOG +3 -0
  3. data/Gemfile +2 -0
  4. data/Guardfile +9 -0
  5. data/LICENSE +504 -0
  6. data/README.md +109 -0
  7. data/Rakefile +14 -0
  8. data/bin/yweather +30 -0
  9. data/lib/yweather.rb +22 -0
  10. data/lib/yweather/astronomy.rb +12 -0
  11. data/lib/yweather/atmosphere.rb +34 -0
  12. data/lib/yweather/client.rb +80 -0
  13. data/lib/yweather/condition.rb +71 -0
  14. data/lib/yweather/forecast.rb +22 -0
  15. data/lib/yweather/image.rb +19 -0
  16. data/lib/yweather/location.rb +15 -0
  17. data/lib/yweather/response.rb +87 -0
  18. data/lib/yweather/units.rb +20 -0
  19. data/lib/yweather/utils.rb +7 -0
  20. data/lib/yweather/version.rb +3 -0
  21. data/lib/yweather/wind.rb +15 -0
  22. data/spec/bin/yweather_spec.rb +7 -0
  23. data/spec/cassettes/invalid_weather_transaction.yml +44 -0
  24. data/spec/cassettes/invalid_woeid_conversion_transaction.yml +38 -0
  25. data/spec/cassettes/valid_weather_transaction.yml +66 -0
  26. data/spec/cassettes/valid_weather_transaction_with_zipcode_conversion.yml +101 -0
  27. data/spec/cassettes/valid_woeid_conversion_transaction.yml +38 -0
  28. data/spec/lib/yweather/astronomy_spec.rb +27 -0
  29. data/spec/lib/yweather/atmosphere_spec.rb +25 -0
  30. data/spec/lib/yweather/client_spec.rb +58 -0
  31. data/spec/lib/yweather/condition_spec.rb +25 -0
  32. data/spec/lib/yweather/forecast_spec.rb +25 -0
  33. data/spec/lib/yweather/image_spec.rb +25 -0
  34. data/spec/lib/yweather/location_spec.rb +25 -0
  35. data/spec/lib/yweather/response_spec.rb +49 -0
  36. data/spec/lib/yweather/units_spec.rb +25 -0
  37. data/spec/lib/yweather/wind_spec.rb +25 -0
  38. data/spec/spec_helper.rb +34 -0
  39. data/spec/support/helpers/spec_parse_helpers.rb +25 -0
  40. data/spec/support/helpers/spec_yweather_helpers.rb +16 -0
  41. data/yweather.gemspec +39 -0
  42. metadata +283 -0
@@ -0,0 +1,20 @@
1
+ module Yweather
2
+ class Units
3
+
4
+ FAHRENHEIT = 'f'
5
+ CELSIUS = 'c'
6
+
7
+ attr_reader :temperature
8
+ attr_reader :distance
9
+ attr_reader :pressure
10
+ attr_reader :speed
11
+
12
+ def initialize(data)
13
+ @temperature = data[:temperature]
14
+ @distance = data[:distance]
15
+ @pressure = data[:pressure]
16
+ @speed = data[:speed]
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module Yweather
2
+ module Utils
3
+ def parse_time(data)
4
+ data ? Time.parse(data) : nil
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Yweather
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,15 @@
1
+ module Yweather
2
+ class Wind
3
+
4
+ attr_reader :chill
5
+ attr_reader :direction
6
+ attr_reader :speed
7
+
8
+ def initialize(data)
9
+ @chill = data[:chill].to_i
10
+ @direction = data[:direction].to_i
11
+ @speed = data[:speed].to_i
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yweather do
4
+
5
+ # TODO: Spec the binary here
6
+
7
+ end
@@ -0,0 +1,44 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://weather.yahooapis.com/forecastrss?w=abadwoeid&u=f
6
+ body: ''
7
+ headers:
8
+ accept:
9
+ - ! '*/*; q=0.5, application/xml'
10
+ accept-encoding:
11
+ - gzip, deflate
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ date:
20
+ - Sat, 14 Jan 2012 00:25:59 GMT
21
+ cache-control:
22
+ - private, max-age=1800
23
+ expires:
24
+ - Sat, 14 Jan 2012 00:55:59 GMT
25
+ connection:
26
+ - close
27
+ transfer-encoding:
28
+ - chunked
29
+ content-type:
30
+ - text/xml;charset=UTF-8
31
+ content-encoding:
32
+ - gzip
33
+ body: !binary |-
34
+ H4sIAAAAAAAAA1yQQU/DMAyF7/0VXpC4tWk7hkZJuwNi0jghMYQ4odB4bUSb
35
+ REm6sn9Ppm2McYgU2e99th9bfPcdbNE6qVVJsiQlgKrWQqqmJK/rZTwn4DxX
36
+ gndaYUl26AgsqohZ586+fO8LJOWK3Yjct2hL0npvCkpDOTnWkh1vtU5q3VPl
37
+ aCDQ7GxsUP96xnFMxmmibUPzNJ3SNKOhTcfGzW8+jHZXJGxQt1wp7MLPS99h
38
+ 9b6HT+DtMAtieLRWW0YP3YgJdLWVxoeN/2uPyr+KiEmPfXVkP0i/A6U9bPSg
39
+ xIl5gYxWass7KWClzOCBbrTFmjsfzlyMJf/kYtQoxTXvzf1QbqLLcYwextHT
40
+ VWyfT8UmcQzcyPlvhM7k5xghPGPRORTBOKgvFLC0Ep64gmwK2W2Rz4rZHTy/
41
+ rCFPsxziuIp+AAAA//8DADpJF5P0AQAA
42
+ http_version: '1.1'
43
+ recorded_at: Sat, 14 Jan 2012 00:25:59 GMT
44
+ recorded_with: VCR 2.0.0.rc1
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://query.yahooapis.com/v1/public/yql
6
+ body: q=select+woeid+from+geo.places+where+text+%3D+%27292929%2C+usa%27&env=http://datatables.org/alltables.env&format=json
7
+ headers:
8
+ accept:
9
+ - ! '*/*'
10
+ user-agent:
11
+ - Ruby
12
+ connection:
13
+ - close
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ access-control-allow-origin:
20
+ - ! '*'
21
+ cache-control:
22
+ - public, max-age=86399, stale-while-revalidate=86399
23
+ content-type:
24
+ - application/json;charset=utf-8
25
+ vary:
26
+ - Accept-Encoding
27
+ date:
28
+ - Sat, 14 Jan 2012 00:18:11 GMT
29
+ server:
30
+ - YTS/1.20.7
31
+ age:
32
+ - '1'
33
+ connection:
34
+ - close
35
+ body: ! '{"query":{"count":8,"created":"2012-01-14T00:18:11Z","lang":"en-US","results":{"place":[{"woeid":"23424977"},{"woeid":"2101027"},{"woeid":"1118473"},{"woeid":"24855952"},{"woeid":"28477735"},{"woeid":"28433002"},{"woeid":"832684"},{"woeid":"55968184"}]}}}'
36
+ http_version: '1.1'
37
+ recorded_at: Sat, 14 Jan 2012 00:18:11 GMT
38
+ recorded_with: VCR 2.0.0.rc1
@@ -0,0 +1,66 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://weather.yahooapis.com/forecastrss?w=12786794&u=f
6
+ body: ''
7
+ headers:
8
+ accept:
9
+ - ! '*/*; q=0.5, application/xml'
10
+ accept-encoding:
11
+ - gzip, deflate
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ date:
20
+ - Sat, 14 Jan 2012 00:15:52 GMT
21
+ cache-control:
22
+ - public, max-age=1800
23
+ expires:
24
+ - Sat, 14 Jan 2012 00:45:52 GMT
25
+ vary:
26
+ - Accept-Encoding
27
+ content-type:
28
+ - text/xml;charset=UTF-8
29
+ content-encoding:
30
+ - gzip
31
+ age:
32
+ - '0'
33
+ transfer-encoding:
34
+ - chunked
35
+ connection:
36
+ - keep-alive
37
+ server:
38
+ - YTS/1.19.8
39
+ body: !binary |-
40
+ H4sIAAAAAAAAA8RVS2/jNhA+x7+CYS9tEYt62IljyFrsemEsmhyCOkFRLBYG
41
+ LTESsRQpkFS0/vcd6uVHiqKn9iKJnNc3M9+M4g8/SoHemDZcyRUOPB8jJlOV
42
+ cZmv8MvzZrrAyFgqMyqUZCt8YAajD8nk6irWxhwtQ2cJvqRZHhpGbcH0ChfW
43
+ VktC4Nrr77wDLZTyUlUSaQh4IMHRMGdqtGmaxmsiT+mchL4fET8gICZNbhaz
44
+ XaXMT9hhuIrTgkrJhDtMYsutYMmfLsQ1+qOLiKbokdFGqewGPWxj0ulMYsHl
45
+ 96QPVhtPZyfQMsrFQbKmQ9hDJ72b3e5hS34dYL5L61VpllJjycv2YevfRovd
46
+ q1fYUsSkjTiJM2ZSzSsLZbuECrbnYE91ATKVeU1zljA5rQ04HM5OZOynmovs
47
+ M7Us2Wh+g4II/UYlCv0gRPPlPEBVidbbZ2d2qgtVsyK59aEy8J7EQ/eWQqXU
48
+ BUYpt4cV7nFhpFnedvxhixFCqaql1SB/kdyyDG0tODWYnHqqQWSQZWXFNLW1
49
+ BhptMMq441UKh5JjVGlmTCviEhhXMZaBoCrOPTVcZigtuBDAuIWLn3Eot20B
50
+ +e7cW8L3mSG1pTIVfDFU1CXP2pSiACzeuOF7LtqLwLk4Iol8z3dBNKi4cQgu
51
+ nRqrlVTlAZlaghKY3C2jOaJli6SWhtkVni+DO6h9mwgvu3b9HVGP1Gx4Zosk
52
+ mIUx6T4nccF4XtgkWMSk/zxn8DsejnSrtRiUhHfgZd6ylBJO9hrGmlS1rgQT
53
+ KlcwBwWMAnHEn4JDL+evMXH2k5gMyKHJ5ZjAWkmoJBTfXFIXUXtOuiE3GOKl
54
+ oDaJFt79bUyGYy9QMk+m9zPvNuxF7uJ/nNWq3v+LgRq0TqiRDpVBwPsfwIIN
55
+ 5Rq7cckcsSKM2nnoWZyBNaj8Q5COeafrIL7+uv788fnjV8eqHBmdjrvzos+1
56
+ KwuZhySKXEuBiPFet/72ybrWmkmLjp1cxmQ/KDjQNyhcoE386ffWon2B3aav
57
+ XKfdCQE/LNsnqq04oLVQdXbw0Bcg6xJFIXpUzRKFUe95C/yYom0t5agzm/c6
58
+ 9yO87kVRodnrmN1/QQCcbGoh0JClY/PlsFKXNukek58rrd54Bvtvf0CXgNtf
59
+ WR8agmKUPBds3Pnr7gfmHP4CGYOzb9+Sy80/8moADJQ5tIzBPXlOeIORUA0w
60
+ C0hWQGWBbnDVsfCsObhnY3h/sdfOg0CrxiCzd0HuhyCz+RCk7erg3MV2zvOa
61
+ Z4ibJ6ZL+gjDtcKvVBiGk7HyzuvOD3bBbHe38/1dO1rOrF0/3doh4+8+dt2G
62
+ 1/V0imjF52OFaTo7NhhAlO0+ZxmY1vI7dMjR1GUBFQtulwEMWYiets/dyE2n
63
+ yeQvAAAA//8DALaxTRAUCQAA
64
+ http_version: '1.1'
65
+ recorded_at: Sat, 14 Jan 2012 00:15:52 GMT
66
+ recorded_with: VCR 2.0.0.rc1
@@ -0,0 +1,101 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://query.yahooapis.com/v1/public/yql
6
+ body: q=select+woeid+from+geo.places+where+text+%3D+%2766206%2C+usa%27&env=http://datatables.org/alltables.env&format=json
7
+ headers:
8
+ accept:
9
+ - ! '*/*'
10
+ user-agent:
11
+ - Ruby
12
+ connection:
13
+ - close
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ access-control-allow-origin:
20
+ - ! '*'
21
+ cache-control:
22
+ - public, max-age=86400, stale-while-revalidate=86400
23
+ content-type:
24
+ - application/json;charset=utf-8
25
+ vary:
26
+ - Accept-Encoding
27
+ date:
28
+ - Sat, 14 Jan 2012 00:15:53 GMT
29
+ server:
30
+ - YTS/1.20.7
31
+ age:
32
+ - '2'
33
+ connection:
34
+ - close
35
+ body: ! '{"query":{"count":1,"created":"2012-01-14T00:15:54Z","lang":"en-US","results":{"place":{"woeid":"12786794"}}}}'
36
+ http_version: '1.1'
37
+ recorded_at: Sat, 14 Jan 2012 00:15:54 GMT
38
+ - request:
39
+ method: get
40
+ uri: http://weather.yahooapis.com/forecastrss?w=12786794&u=f
41
+ body: ''
42
+ headers:
43
+ accept:
44
+ - ! '*/*; q=0.5, application/xml'
45
+ accept-encoding:
46
+ - gzip, deflate
47
+ user-agent:
48
+ - Ruby
49
+ response:
50
+ status:
51
+ code: 200
52
+ message: OK
53
+ headers:
54
+ date:
55
+ - Sat, 14 Jan 2012 00:15:54 GMT
56
+ cache-control:
57
+ - public, max-age=1800
58
+ expires:
59
+ - Sat, 14 Jan 2012 00:45:54 GMT
60
+ vary:
61
+ - Accept-Encoding
62
+ content-type:
63
+ - text/xml;charset=UTF-8
64
+ content-encoding:
65
+ - gzip
66
+ age:
67
+ - '0'
68
+ transfer-encoding:
69
+ - chunked
70
+ connection:
71
+ - keep-alive
72
+ server:
73
+ - YTS/1.19.8
74
+ body: !binary |-
75
+ H4sIAAAAAAAAA8RVS2/jNhA+x79iol7aIhYly04cQ9Zi1wtj0eQQ1AmKYrEw
76
+ aImRiKVIgaTi9b/vUC8/UhQ9tRdJ5Ly+mflmFH/4UQp4Y9pwJZde6AceMJmq
77
+ jMt86b08r8dzD4ylMqNCSbb0Dsx48CEZXV3F2pij5cRZoi9pFoc9o7ZgeukV
78
+ 1lYLQvDa7+78Ay2U8lNVEmkIeiDh0TBnarDZ7/f+PvKVzskkCCIShATFZJ+b
79
+ +XRbKfOT5zBcxWlBpWTCHUax5Vaw5E8X4hr+aCPCGB4Z3SuV3cDDJiatzigW
80
+ XH5PumC18XV2Ai2jXBwk27cIO+ikc7PdPmzIrz3Md2m9Ks1Saix52Txsgtto
81
+ vn31C1uKmDQRR3HGTKp5ZbFsl1DR9hzsqS5CpjKvac4SJse1QYf92YmM/VRz
82
+ kX2mliVrzW8gjOA3KmEShBOYLWYhVCWsNs/O7FQXq2ZFchtgZfA9ivvuLYRK
83
+ qQsMKbeHpdfh8kCzvOn4w8YDgFTV0mqUv0huWQYbi06NR0491SgyYFlZMU1t
84
+ rZFGaw8y7niV4qHkHlSaGdOIuETGVYxlKKiKc097LjNICy4EMm7u4mccy20b
85
+ QIE7d5b4fWZIbalMhV8MirrkWZNSFKLFGzd8x0VzEToXRyRR4AcuiEYVNw7h
86
+ pVNjtZKqPICpJSqhyd0imgEtGyS1NMwuvdkivMPaN4nwsm3X3xH1SM09z2yR
87
+ hNNJTNrPUVwwnhc2Cecx6T7PGfyOhwPdai16JeEfeJk3LKWEk53GsSZVrSvB
88
+ hMoVzkGBo0Ac8cfo0M/5a0yc/SgmPXJscjkksFISK4nFN5fUBWrPSdfnhkO8
89
+ ENQm0dy/v41Jf+wESubJ+H7q3046kbv4H2e1qnf/YqB6rRNqpH1lAHn/A1mw
90
+ plx7blwyR6zIg2YeOhZnaI0q/xCkZd7pOoivv64+f3z++NWxKgej02F3XvS5
91
+ dmUhswmJItdSJGK8042/XbKqtWbSwrGTi5jsegUH+gYmc1jHn35vLJoX2q27
92
+ yrXarRDx47J9otqKA6yEqrODD1+QrAuIJvCo9guYRJ3nDfJjDJtaykFnOut0
93
+ 7gd47YtCodnrkN1/QQAvWddCQJ+lY/PlsFKXNmkfo58rrd54hvtvd4BLwM2v
94
+ rAuNQT1Ings27PxV+wNzDn/BjNHZt2/J5eYfeNUDRsocGsZ4HXlOeOOBUHtk
95
+ FpKswMoi3fCqZeFZc7yOjZP7i712HgRbNQSZvgty3weZzvogTVd75y62c57X
96
+ PANunpgu6SMO19J7pcIwLxkq77xug3AbTrd32yDYNqPlzJr1064dMvzuY9dt
97
+ fF2Px0ArPh8qTNPpscEIomz2OcvQtJbfsUOOpi4LrFh4uwhxyKbwtHluR248
98
+ TkZ/AQAA//8DADeGX0EUCQAA
99
+ http_version: '1.1'
100
+ recorded_at: Sat, 14 Jan 2012 00:15:54 GMT
101
+ recorded_with: VCR 2.0.0.rc1
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://query.yahooapis.com/v1/public/yql
6
+ body: q=select+woeid+from+geo.places+where+text+%3D+%2766206%2C+usa%27&env=http://datatables.org/alltables.env&format=json
7
+ headers:
8
+ accept:
9
+ - ! '*/*'
10
+ user-agent:
11
+ - Ruby
12
+ connection:
13
+ - close
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ access-control-allow-origin:
20
+ - ! '*'
21
+ cache-control:
22
+ - public, max-age=86400, stale-while-revalidate=86400
23
+ content-type:
24
+ - application/json;charset=utf-8
25
+ vary:
26
+ - Accept-Encoding
27
+ date:
28
+ - Sat, 14 Jan 2012 00:15:52 GMT
29
+ server:
30
+ - YTS/1.20.7
31
+ age:
32
+ - '2'
33
+ connection:
34
+ - close
35
+ body: ! '{"query":{"count":1,"created":"2012-01-14T00:15:53Z","lang":"en-US","results":{"place":{"woeid":"12786794"}}}}'
36
+ http_version: '1.1'
37
+ recorded_at: Sat, 14 Jan 2012 00:15:53 GMT
38
+ recorded_with: VCR 2.0.0.rc1
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yweather::Astronomy do
4
+
5
+ before(:each) do
6
+ @client ||= Yweather::Client.new
7
+ @response ||= @client.get_response_for_woeid(default_woeid)
8
+ @astronomy = @response.astronomy
9
+ end
10
+
11
+ context "accessors" do
12
+ [:sunrise, :sunset].each do |acc|
13
+ it "reads and writes :#{acc}", :vcr => {:cassette_name => "valid_weather_transaction"} do
14
+ has_rw_accessor(@astronomy, acc)
15
+ end
16
+ end
17
+ end
18
+
19
+ it "has a valid sunrise", :vcr => {:cassette_name => "valid_weather_transaction"} do
20
+ @astronomy.sunrise.should_not be_nil
21
+ end
22
+
23
+ it "has a valid sunset", :vcr => {:cassette_name => "valid_weather_transaction"} do
24
+ @astronomy.sunset.should_not be_nil
25
+ end
26
+
27
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yweather::Atmosphere do
4
+
5
+ before(:each) do
6
+ @client ||= Yweather::Client.new
7
+ @response ||= @client.get_response_for_woeid(default_woeid)
8
+ @atmosphere = @response.atmosphere
9
+ end
10
+
11
+ context "accessors" do
12
+ [:humidity, :visibility, :pressure, :barometer].each do |acc|
13
+ it "reads and writes :#{acc}", :vcr => {:cassette_name => "valid_weather_transaction"} do
14
+ has_rw_accessor(@atmosphere, acc)
15
+ end
16
+ end
17
+ end
18
+
19
+ [:humidity, :visibility, :pressure, :barometer].each do |acc|
20
+ it "has a valid #{acc}", :vcr => {:cassette_name => "valid_weather_transaction"} do
21
+ @atmosphere.send(acc).should_not be_nil
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yweather::Client do
4
+
5
+ before do
6
+ @client ||= Yweather::Client.new
7
+ end
8
+
9
+ context "using valid data" do
10
+ it "has a readonly :response accessor", :vcr => {:cassette_name => "valid_weather_transaction"} do
11
+ has_readonly_accessor(@client, :response)
12
+ end
13
+
14
+ it "converts a ZIPCODE to a WOEID", :vcr => {:cassette_name => "valid_woeid_conversion_transaction"} do
15
+ response = @client.send(:woeid_from_zipcode, default_zipcode)
16
+ response.should == default_woeid.to_s
17
+ end
18
+
19
+ it "pulls the weather feed as XML for a given WOEID", :vcr => {:cassette_name => "valid_weather_transaction"} do
20
+ xml = @client.get_feed_for_woeid(default_woeid, :format => :xml)
21
+ is_xml?(xml).should be_true
22
+ end
23
+
24
+ it "pulls the weather feed as JSON for a given WOEID", :vcr => {:cassette_name => "valid_weather_transaction"} do
25
+ json = @client.get_feed_for_woeid(default_woeid, :format => :json)
26
+ is_json?(json).should be_true
27
+ end
28
+
29
+ it "pulls the weather feed as JSON for a given ZIPCODE", :vcr => {:cassette_name => "valid_weather_transaction_with_zipcode_conversion"} do
30
+ json = @client.get_feed_for_zipcode(default_zipcode, :format => :json)
31
+ is_json?(json).should be_true
32
+ end
33
+
34
+ it "gets the weather as a Yweather::Response object for WOEID", :vcr => {:cassette_name => "valid_weather_transaction"} do
35
+ response = @client.get_response_for_woeid(default_woeid)
36
+ response.is_a?(Yweather::Response).should be_true
37
+ end
38
+
39
+ it "gets the weather as a Yweather::Response object for ZIPCODE", :vcr => {:cassette_name => "valid_weather_transaction_with_zipcode_conversion"} do
40
+ response = @client.get_response_for_zipcode(default_zipcode)
41
+ response.is_a?(Yweather::Response).should be_true
42
+ end
43
+ end
44
+
45
+ context "using invalid data" do
46
+ it "fails to convert a ZIPCODE to a WOEID", :vcr => {:cassette_name => "invalid_woeid_conversion_transaction"} do
47
+ expect {
48
+ @client.send(:woeid_from_zipcode, 292929)
49
+ }.should raise_error Yweather::YweatherException
50
+ end
51
+
52
+ it "fails to pull the weather feed", :vcr => {:cassette_name => "invalid_weather_transaction"} do
53
+ expect {
54
+ @client.get_feed_for_woeid('abadwoeid')
55
+ }.should raise_error Yweather::YweatherException
56
+ end
57
+ end
58
+ end