undergroundweather 0.0.2 → 0.0.3

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.
@@ -0,0 +1 @@
1
+ 1.8.7-p352
data/README.md CHANGED
@@ -14,11 +14,15 @@ Implemented Endpoints
14
14
 
15
15
  ```
16
16
  gem install undergroundweather
17
+ ```
18
+ ```
19
+ require 'undergroundweather'
20
+
17
21
  api_key = 'xxxxxxxx' # Your WU API Key
18
22
  uw = UndergroundWeather.new(api_key)
19
23
 
20
24
  zip_code = 19106
21
- uw.<endpoint>(zip_code) # conditions, forecast, astronomy, etc...
25
+ uw.[endpoint](zip_code) # conditions, forecast, astronomy, etc...
22
26
  ```
23
27
 
24
28
  ## Development
@@ -26,9 +30,5 @@ uw.<endpoint>(zip_code) # conditions, forecast, astronomy, etc...
26
30
  ### ToDo
27
31
  https://github.com/brookemckim/undergroundweather/issues?labels=Story&sort=created&direction=desc&state=open&page=1
28
32
 
29
- ### Testing
33
+ ### Tests
30
34
  Using minitest/spec
31
-
32
- ```
33
- rake test
34
- ```
data/Rakefile CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
 
4
- desc "Test UndergroundWeather"
5
4
  Rake::TestTask.new do |t|
6
- t.libs.push "lib"
7
- t.test_files = FileList['specs/**/*_spec.rb', 'specs/*_spec.rb']
5
+ t.libs.push 'lib'
6
+ t.libs.push 'spec'
7
+ t.test_files = FileList['spec/**/*_spec.rb']
8
8
  t.verbose = true
9
- end
9
+ end
@@ -1,19 +1,19 @@
1
1
  $:.push File.expand_path(File.dirname(__FILE__))
2
2
 
3
- require 'UndergroundWeather/version'
4
- require 'UndergroundWeather/api_call'
5
- require 'UndergroundWeather/daily_forecast'
6
- require 'UndergroundWeather/webcam'
3
+ require 'undergroundweather/version'
4
+ require 'undergroundweather/api_call'
5
+ require 'undergroundweather/daily_forecast'
6
+ require 'undergroundweather/webcam'
7
7
 
8
- require 'UndergroundWeather/features/current_conditions'
9
- require 'UndergroundWeather/features/forecast'
10
- require 'UndergroundWeather/features/astronomy'
11
- require 'UndergroundWeather/features/radar'
12
- require 'UndergroundWeather/features/satellite'
13
- require 'UndergroundWeather/features/webcams'
8
+ require 'undergroundweather/features/current_conditions'
9
+ require 'undergroundweather/features/forecast'
10
+ require 'undergroundweather/features/astronomy'
11
+ require 'undergroundweather/features/radar'
12
+ require 'undergroundweather/features/satellite'
13
+ require 'undergroundweather/features/webcams'
14
14
 
15
- require 'UndergroundWeather/features'
16
- require 'UndergroundWeather/client'
15
+ require 'undergroundweather/features'
16
+ require 'undergroundweather/client'
17
17
 
18
18
  module UndergroundWeather
19
19
  def self.new(*args)
@@ -13,15 +13,22 @@ module UndergroundWeather
13
13
  @feature = feature
14
14
  @query = query
15
15
  @error = false
16
-
17
- @response = JSON.parse(get)
18
- @error = true if @response['response']['error']
19
16
  end
20
17
 
18
+ def get!
19
+ get
20
+ end
21
+
22
+ def response
23
+ @response ||= JSON.parse(get)
24
+ end
25
+
21
26
  def url
22
27
  URI.parse("#{BASE_URL}/#{@api_key}/#{@feature}/q/#{@query}.json")
23
28
  end
24
29
 
30
+ private
31
+
25
32
  def get
26
33
  resp = Net::HTTP.get_response(url)
27
34
 
@@ -30,7 +37,7 @@ module UndergroundWeather
30
37
  else
31
38
  @error = true
32
39
 
33
- # raise exception here
40
+ # raise exception here?
34
41
  {}
35
42
  end
36
43
  end
@@ -6,7 +6,7 @@ module UndergroundWeather
6
6
  :humidity, :wind, :wind_dir, :wind_mph, :icon, :url,
7
7
  :heat_index_f, :heat_index_c, :dewpoint_f, :dewpoint_c,
8
8
  :windchill_f, :windchill_c, :visibility_mi, :visibility_km,
9
- :pressure_mb, :pressure_in
9
+ :pressure_mb, :pressure_in, :precip_hour, :precip_today
10
10
 
11
11
  def initialize(feed)
12
12
  obsv = feed['current_observation']
@@ -40,6 +40,8 @@ module UndergroundWeather
40
40
  @visibility_km = obsv['visibility_km']
41
41
  @pressure_mb = obsv['pressure_mb']
42
42
  @pressure_in = obsv['pressure_in']
43
+ @precip_today = obsv['precip_today_in']
44
+ @precip_hour = obsv['precip_1hr_in']
43
45
 
44
46
  @icon = obsv['icon_url']
45
47
  @url = obsv['forecast_url']
@@ -1,3 +1,3 @@
1
1
  module UndergroundWeather
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ require 'minitest/autorun'
4
+ require 'mocha'
5
+
6
+ require 'lib/undergroundweather'
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe UndergroundWeather::ApiCall do
4
+ before do
5
+ @api_key = 'apikey'
6
+ @feature = 'forecast'
7
+ @query = '19106'
8
+
9
+ @uw = UndergroundWeather::ApiCall.new(@api_key, @feature, @query)
10
+ end
11
+
12
+ it "can be initialized with api_key, forecast, and query" do
13
+ @uw.must_be_instance_of(UndergroundWeather::ApiCall)
14
+ end
15
+
16
+ it "should not have an error if no call has been made" do
17
+ @uw.error.must_equal(false)
18
+ end
19
+
20
+ it "should have an error if http response code is not 200" do
21
+ http_response = mock()
22
+ http_response.expects(:code).returns('404')
23
+ Net::HTTP.stubs(:get_response).returns(http_response)
24
+
25
+ @uw.get!
26
+ @uw.error.must_equal(true)
27
+ end
28
+
29
+ it "should not have an error if http response code is 200" do
30
+ http_response = mock()
31
+ http_response.expects(:code).returns('200')
32
+ http_response.expects(:body).returns({})
33
+
34
+ Net::HTTP.stubs(:get_response).returns(http_response)
35
+
36
+ @uw.get!
37
+ @uw.error.must_equal(false)
38
+ end
39
+
40
+ it "should return correct url" do
41
+ @uw.url.to_s.must_equal(URI.parse("http://api.wunderground.com/api/apikey/forecast/q/19106.json").to_s)
42
+ end
43
+ end
44
+
@@ -1,4 +1,4 @@
1
- require './specs/helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe UndergroundWeather::Client do
4
4
  before do
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe UndergroundWeather::Features do
4
+ before do
5
+ class Features
6
+ extend UndergroundWeather::Features
7
+ end
8
+
9
+ @api_response = mock()
10
+ @api_response.stubs(:response).returns({})
11
+ @api_response.stubs(:error).returns(false)
12
+ UndergroundWeather::ApiCall.stubs(:new).returns(@api_response)
13
+ end
14
+
15
+ it "should define conditions" do
16
+ Features.must_respond_to(:conditions)
17
+ end
18
+
19
+ it "should define forecast" do
20
+ Features.must_respond_to(:forecast)
21
+ end
22
+
23
+ it "should define astronomy" do
24
+ Features.must_respond_to(:astronomy)
25
+ end
26
+
27
+ it "should define radar" do
28
+ Features.must_respond_to(:radar)
29
+ end
30
+
31
+ it "should define satellite" do
32
+ Features.must_respond_to(:satellite)
33
+ end
34
+
35
+ it "should define webcams" do
36
+ Features.must_respond_to(:webcams)
37
+ end
38
+ end
@@ -1,4 +1,4 @@
1
- require './specs/helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe UndergroundWeather do
4
4
  it "instaniates Client on self.new" do
@@ -19,5 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec", '~>2.7.0'
22
+ s.add_development_dependency "minitest", '~> 2.8.0'
23
+ s.add_development_dependency "mocha", '~> 0.10.0'
24
+
23
25
  end
metadata CHANGED
@@ -1,24 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: undergroundweather
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - brookemckim
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-10-17 00:00:00.000000000Z
13
- dependencies: []
17
+
18
+ date: 2011-11-17 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: minitest
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 47
30
+ segments:
31
+ - 2
32
+ - 8
33
+ - 0
34
+ version: 2.8.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: mocha
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 55
46
+ segments:
47
+ - 0
48
+ - 10
49
+ - 0
50
+ version: 0.10.0
51
+ type: :development
52
+ version_requirements: *id002
14
53
  description: API Client for the Weather Underground
15
- email:
54
+ email:
16
55
  - brooke.mckim@gmail.com
17
56
  executables: []
57
+
18
58
  extensions: []
59
+
19
60
  extra_rdoc_files: []
20
- files:
61
+
62
+ files:
21
63
  - .gitignore
64
+ - .rbenv-version
22
65
  - Gemfile
23
66
  - README.md
24
67
  - Rakefile
@@ -35,33 +78,49 @@ files:
35
78
  - lib/undergroundweather/features/webcams.rb
36
79
  - lib/undergroundweather/version.rb
37
80
  - lib/undergroundweather/webcam.rb
38
- - specs/helper.rb
39
- - specs/undergroundweather/api_call_spec.rb
40
- - specs/undergroundweather/client_spec.rb
41
- - specs/undergroundweather_spec.rb
81
+ - spec/spec_helper.rb
82
+ - spec/undergroundweather/api_call_spec.rb
83
+ - spec/undergroundweather/client_spec.rb
84
+ - spec/undergroundweather/features_spec.rb
85
+ - spec/undergroundweather_spec.rb
42
86
  - undergroundweather.gemspec
87
+ has_rdoc: true
43
88
  homepage: http://github.com/brookemckim/undergroundweather
44
89
  licenses: []
90
+
45
91
  post_install_message:
46
92
  rdoc_options: []
47
- require_paths:
93
+
94
+ require_paths:
48
95
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
96
+ required_ruby_version: !ruby/object:Gem::Requirement
50
97
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
106
  none: false
57
- requirements:
58
- - - ! '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ hash: 3
111
+ segments:
112
+ - 0
113
+ version: "0"
61
114
  requirements: []
115
+
62
116
  rubyforge_project: undergroundweather
63
- rubygems_version: 1.8.10
117
+ rubygems_version: 1.6.2
64
118
  signing_key:
65
119
  specification_version: 3
66
120
  summary: API Client for wunderground.com
67
- test_files: []
121
+ test_files:
122
+ - spec/spec_helper.rb
123
+ - spec/undergroundweather/api_call_spec.rb
124
+ - spec/undergroundweather/client_spec.rb
125
+ - spec/undergroundweather/features_spec.rb
126
+ - spec/undergroundweather_spec.rb
@@ -1,8 +0,0 @@
1
- require 'minitest/autorun'
2
-
3
- ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
- $LOAD_PATH << File.join(ROOT, 'lib')
5
- $LOAD_PATH << File.join(ROOT, 'lib', 'UndergroundWeather')
6
-
7
- require File.join(ROOT, 'lib', 'UndergroundWeather.rb')
8
-
@@ -1,6 +0,0 @@
1
- require './specs/helper'
2
-
3
- describe UndergroundWeather::ApiCall do
4
-
5
- end
6
-