weather_jp 1.0.4 → 2.0.0

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,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