weather_jp 1.0.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe WeatherJp::City do
4
+ include Fixturable
5
+ set_fixture 'tokyo.xml'
6
+
7
+ let(:weather) { WeatherJp.get(:tokyo) }
8
+ let(:city) { weather.city }
9
+
10
+ describe '#full_name' do
11
+ subject { city.full_name }
12
+ it { is_expected.to eq('東京都 東京') }
13
+ end
14
+
15
+ describe '#code' do
16
+ subject { city.code }
17
+ it { is_expected.to eq('JAXX0085') }
18
+ end
19
+
20
+ describe '#latitude' do
21
+ subject { city.latitude }
22
+ it { is_expected.to eq(35.6751957) }
23
+ end
24
+
25
+ describe '#longitude' do
26
+ subject { city.longitude }
27
+ it { is_expected.to eq(139.7695956) }
28
+ end
29
+
30
+ describe '#to_hash' do
31
+ subject { city.to_hash }
32
+ it { is_expected.to be_kind_of(Hash) }
33
+ it { is_expected.not_to be_empty }
34
+ end
35
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe WeatherJp::DayWeather do
4
+ include Fixturable
5
+ set_fixture 'tokyo.xml'
6
+
7
+ let(:weather) { WeatherJp.get(:tokyo) }
8
+ let(:day_weather) { weather.tomorrow }
9
+
10
+ describe '#text' do
11
+ subject { day_weather.text }
12
+ it { is_expected.to eq('晴れ') }
13
+ end
14
+
15
+ describe '#high' do
16
+ subject { day_weather.high }
17
+ it { is_expected.to eq(52) }
18
+ end
19
+
20
+ describe '#low' do
21
+ subject { day_weather.low }
22
+ it { is_expected.to eq(34) }
23
+ end
24
+
25
+ describe '#precip' do
26
+ subject { day_weather.precip }
27
+ it { is_expected.to eq(0) }
28
+ end
29
+
30
+ describe '#date_text' do
31
+ context 'with current' do
32
+ let(:day_weather) { weather.current }
33
+ subject { day_weather.date_text }
34
+ it { is_expected.to eq('今') }
35
+ end
36
+
37
+ context 'with today' do
38
+ let(:day_weather) { weather.today }
39
+ subject { day_weather.date_text }
40
+ it { is_expected.to eq('今日') }
41
+ end
42
+
43
+ context 'with tomorrow' do
44
+ let(:day_weather) { weather.tomorrow }
45
+ subject { day_weather.date_text }
46
+ it { is_expected.to eq('明日') }
47
+ end
48
+
49
+ context 'with day after tomorrow' do
50
+ let(:day_weather) { weather.day_after_tomorrow }
51
+ subject { day_weather.date_text }
52
+ it { is_expected.to eq('明後日') }
53
+ end
54
+
55
+ context 'with 3 days later' do
56
+ let(:day_weather) { weather.for(3) }
57
+ subject { day_weather.date_text }
58
+ it { is_expected.to eq('3日後') }
59
+ end
60
+ end
61
+
62
+ describe '#to_s' do
63
+ subject { day_weather.to_s }
64
+ it { is_expected.to match(/天気/) }
65
+ end
66
+
67
+ describe '#to_hash' do
68
+ subject { day_weather.to_hash }
69
+ it { is_expected.to be_kind_of(Hash) }
70
+ it { is_expected.not_to be_empty }
71
+ end
72
+
73
+ context 'with current weather' do
74
+ let(:day_weather) { weather.current }
75
+
76
+ describe '#temperature' do
77
+ subject { day_weather.temperature }
78
+ it { is_expected.to eq(41) }
79
+ end
80
+
81
+ describe '#wind_speed' do
82
+ subject { day_weather.wind_speed }
83
+ it { is_expected.to eq(20) }
84
+ end
85
+
86
+ describe '#wind_text' do
87
+ subject { day_weather.wind_text }
88
+ it { is_expected.to eq('風向: 北北西 / 風速: 20 マイル') }
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe WeatherJp::RequestParser do
4
+ describe '.parse' do
5
+ {
6
+ '東京の今日の天気' => {day: :today, city: '東京'},
7
+ '今日の東京の天気' => {day: :today, city: '東京'},
8
+ '東京のいまの天気' => {day: :current, city: '東京'},
9
+ 'いまの東京の天気' => {day: :current, city: '東京'},
10
+ '東京の今の天気' => {day: :current, city: '東京'},
11
+ '今の東京の天気' => {day: :current, city: '東京'},
12
+ '東京の明日の天気' => {day: :tomorrow, city: '東京'},
13
+ '東京の明後日の天気' => {day: :day_after_tomorrow, city: '東京'},
14
+ '東京の3日後の天気' => {day: 3, city: '東京'},
15
+ '東京の3日後の天気' => {day: 3, city: '東京'},
16
+ '東京の4日後の天気' => {day: 4, city: '東京'},
17
+ '東京の4日後の天気' => {day: 4, city: '東京'},
18
+ '東京の今日の天気教えて〜' => {day: :today, city: '東京'},
19
+ 'あきるの市の今日の天気' => {day: :today, city: 'あきるの市'},
20
+ 'あきるの市の今日の天気教えなさい' => {day: :today, city: 'あきるの市'},
21
+ '今日のあきるの市の天気' => {day: :today, city: 'あきるの市'}
22
+ }.each do |sentence, expected|
23
+ it "parses #{sentence} then return '#{expected}'" do
24
+ request = WeatherJp::RequestParser.parser(sentence)
25
+ expect(request).to be_kind_of(WeatherJp::RequestParser::Request)
26
+ expect(request.city).to eq(expected[:city])
27
+ expect(request.day).to eq(expected[:day])
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe WeatherJp::Weather do
4
+ include Fixturable
5
+ set_fixture 'tokyo.xml'
6
+
7
+ let(:weather) { WeatherJp.get(:tokyo) }
8
+
9
+ describe '#each' do
10
+ it 'succeeds' do
11
+ expect { weather.each {} }.not_to raise_error
12
+ end
13
+ end
14
+
15
+ describe '#each_without_current' do
16
+ it 'succeeds' do
17
+ expect { weather.each_without_current {} }.not_to raise_error
18
+ end
19
+ end
20
+
21
+ describe '#current' do
22
+ subject { weather.current }
23
+ it { is_expected.to be_kind_of(WeatherJp::DayWeather) }
24
+ end
25
+
26
+ describe '#today' do
27
+ subject { weather.today }
28
+ it { is_expected.to be_kind_of(WeatherJp::DayWeather) }
29
+ end
30
+
31
+ describe '#tomorrow' do
32
+ subject { weather.tomorrow }
33
+ it { is_expected.to be_kind_of(WeatherJp::DayWeather) }
34
+ end
35
+
36
+ describe '#day_after_tomorrow' do
37
+ subject { weather.day_after_tomorrow }
38
+ it { is_expected.to be_kind_of(WeatherJp::DayWeather) }
39
+ end
40
+
41
+ describe '#for' do
42
+ context 'with a Date' do
43
+ subject { weather.for(Date.parse('2015-01-01')) }
44
+ it 'is not implemented' do
45
+ expect { subject }.to raise_error(NotImplementedError)
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+
@@ -1,52 +1,18 @@
1
- # -*- coding: utf-8 -*-
2
1
  require 'spec_helper'
3
2
 
4
- describe "WeatherJp" do
5
- before :all do
6
- @weather = WeatherJp.get :tokyo
7
- end
8
-
9
- describe ".get" do
10
- it "should return Weather instance" do
11
- @weather.class.should == WeatherJp::Weather
12
- end
3
+ RSpec.describe WeatherJp do
4
+ include Fixturable
5
+ set_fixture 'tokyo.xml'
13
6
 
14
- it "should accept option and return DayWeather object" do
15
- WeatherJp.get(:tokyo, :today).class.
16
- should == WeatherJp::Weather::DayWeather
17
- end
18
- end
7
+ let(:weather) { WeatherJp.get(:tokyo) }
19
8
 
20
- describe ".customize_to_s" do
21
- it "should customize DayWeather#to_s" do
22
- WeatherJp.customize_to_s { 'success' }
23
- WeatherJp.get(:tokyo, :today).to_s.should == 'success'
24
- end
9
+ describe '.get' do
10
+ subject { described_class.get(:tokyo) }
11
+ it { is_expected.to be_kind_of(WeatherJp::Weather) }
25
12
  end
26
13
 
27
- describe ".parser" do
28
- it "should parse japanese string" do
29
- {
30
- "東京の今日の天気" => {day: "today", city: "東京"},
31
- "今日の東京の天気" => {day: "today", city: "東京"},
32
- "東京のいまの天気" => {day: "today", city: "東京"},
33
- "いまの東京の天気" => {day: "today", city: "東京"},
34
- "東京の今の天気" => {day: "today", city: "東京"},
35
- "今の東京の天気" => {day: "today", city: "東京"},
36
- "東京の明日の天気" => {day: "tomorrow", city: "東京"},
37
- "東京の明後日の天気" => {day: "day_after_tomorrow", city: "東京"},
38
- "東京の3日後の天気" => {day: 3, city: "東京"},
39
- "東京の3日後の天気" => {day: 3, city: "東京"},
40
- "東京の4日後の天気" => {day: 4, city: "東京"},
41
- "東京の4日後の天気" => {day: 4, city: "東京"},
42
- "東京の今日の天気教えて〜" => {day: "today", city: "東京"},
43
- "あきるの市の今日の天気" => {day: "today", city: "あきるの市"},
44
- "あきるの市の今日の天気教えなさい" => {day: "today", city: "あきるの市"},
45
- "今日のあきるの市の天気" => {day: "today", city: "あきるの市"}
46
- }.each do |test, expect|
47
- WeatherJp.parser(test).should == expect
48
- end
49
- end
14
+ describe '.parse' do
15
+ subject { described_class.parse('明日の東京の天気') }
16
+ it { is_expected.to be_kind_of(WeatherJp::DayWeather) }
50
17
  end
51
18
  end
52
-
@@ -15,8 +15,13 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = WeatherJp::VERSION
17
17
 
18
- gem.add_dependency "nokogiri", "~>1.5.5"
18
+ gem.add_dependency "activesupport"
19
+ gem.add_dependency "nokogiri" # was "1.6.5"
20
+ gem.add_dependency "rack"
19
21
  gem.add_dependency "rake", ">= 0.9.2"
20
- gem.add_development_dependency "rspec"
21
- gem.add_development_dependency "rspec-core"
22
+ gem.add_development_dependency "pry"
23
+ gem.add_development_dependency "rspec", "~> 3"
24
+ gem.add_development_dependency "simplecov"
25
+ gem.add_development_dependency "webmock"
26
+ gem.add_development_dependency "coveralls"
22
27
  end
metadata CHANGED
@@ -1,69 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weather_jp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taiki ONO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-01 00:00:00.000000000 Z
11
+ date: 2015-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: nokogiri
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ~>
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
18
46
  - !ruby/object:Gem::Version
19
- version: 1.5.5
47
+ version: '0'
20
48
  type: :runtime
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - ~>
52
+ - - ">="
25
53
  - !ruby/object:Gem::Version
26
- version: 1.5.5
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rake
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - '>='
59
+ - - ">="
32
60
  - !ruby/object:Gem::Version
33
61
  version: 0.9.2
34
62
  type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - '>='
66
+ - - ">="
39
67
  - !ruby/object:Gem::Version
40
68
  version: 0.9.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: rspec
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
- - - '>='
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
46
116
  - !ruby/object:Gem::Version
47
117
  version: '0'
48
118
  type: :development
49
119
  prerelease: false
50
120
  version_requirements: !ruby/object:Gem::Requirement
51
121
  requirements:
52
- - - '>='
122
+ - - ">="
53
123
  - !ruby/object:Gem::Version
54
124
  version: '0'
55
125
  - !ruby/object:Gem::Dependency
56
- name: rspec-core
126
+ name: coveralls
57
127
  requirement: !ruby/object:Gem::Requirement
58
128
  requirements:
59
- - - '>='
129
+ - - ">="
60
130
  - !ruby/object:Gem::Version
61
131
  version: '0'
62
132
  type: :development
63
133
  prerelease: false
64
134
  version_requirements: !ruby/object:Gem::Requirement
65
135
  requirements:
66
- - - '>='
136
+ - - ">="
67
137
  - !ruby/object:Gem::Version
68
138
  version: '0'
69
139
  description: Fetch Japan weather info as Ruby object easily.
@@ -73,24 +143,30 @@ executables: []
73
143
  extensions: []
74
144
  extra_rdoc_files: []
75
145
  files:
76
- - .gitignore
77
- - .travis.yml
146
+ - ".coveralls.yml"
147
+ - ".gitignore"
148
+ - ".travis.yml"
149
+ - CHANGELOG.md
78
150
  - Gemfile
79
- - HISTORY.md
80
151
  - LICENSE
81
- - README.jp.md
82
152
  - README.md
83
153
  - Rakefile
84
154
  - lib/weather_jp.rb
155
+ - lib/weather_jp/adapter.rb
156
+ - lib/weather_jp/city.rb
85
157
  - lib/weather_jp/day_weather.rb
158
+ - lib/weather_jp/request_parser.rb
86
159
  - lib/weather_jp/version.rb
87
- - spec/day_weather_spec.rb
88
- - spec/fixture/RSS.rss
89
- - spec/fixture/ny.rss
160
+ - lib/weather_jp/weather.rb
161
+ - spec/fixture/not_found.xml
162
+ - spec/fixture/tokyo.xml
90
163
  - spec/spec_helper.rb
164
+ - spec/weather_jp/adapter_spec.rb
165
+ - spec/weather_jp/city_spec.rb
166
+ - spec/weather_jp/day_weather_spec.rb
167
+ - spec/weather_jp/request_parser_spec.rb
168
+ - spec/weather_jp/weather_spec.rb
91
169
  - spec/weather_jp_spec.rb
92
- - spec/weather_spec.rb
93
- - spec/wrapper_spec.rb
94
170
  - weather_jp.gemspec
95
171
  homepage: http://taiki45.github.com/weather_jp
96
172
  licenses: []
@@ -101,25 +177,27 @@ require_paths:
101
177
  - lib
102
178
  required_ruby_version: !ruby/object:Gem::Requirement
103
179
  requirements:
104
- - - '>='
180
+ - - ">="
105
181
  - !ruby/object:Gem::Version
106
182
  version: '0'
107
183
  required_rubygems_version: !ruby/object:Gem::Requirement
108
184
  requirements:
109
- - - '>='
185
+ - - ">="
110
186
  - !ruby/object:Gem::Version
111
187
  version: '0'
112
188
  requirements: []
113
189
  rubyforge_project:
114
- rubygems_version: 2.0.0
190
+ rubygems_version: 2.2.2
115
191
  signing_key:
116
192
  specification_version: 4
117
193
  summary: Japan weather info API wrapper.
118
194
  test_files:
119
- - spec/day_weather_spec.rb
120
- - spec/fixture/RSS.rss
121
- - spec/fixture/ny.rss
195
+ - spec/fixture/not_found.xml
196
+ - spec/fixture/tokyo.xml
122
197
  - spec/spec_helper.rb
198
+ - spec/weather_jp/adapter_spec.rb
199
+ - spec/weather_jp/city_spec.rb
200
+ - spec/weather_jp/day_weather_spec.rb
201
+ - spec/weather_jp/request_parser_spec.rb
202
+ - spec/weather_jp/weather_spec.rb
123
203
  - spec/weather_jp_spec.rb
124
- - spec/weather_spec.rb
125
- - spec/wrapper_spec.rb