undergroundweather 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-