weather-report 0.3.5 → 0.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c875ad79a6273a3ae783c2313fed32da33d4944d
4
- data.tar.gz: b1cf98f6afb7f6fa2cfad698b49734f57b7b6dd7
2
+ SHA256:
3
+ metadata.gz: 940926ddd30861ac84a28085e33ea3a5545b26c8e6594bfe95f385bc4cd02968
4
+ data.tar.gz: 91d5683c8c07b435493f0e8a6f676360e96b9f48625ca2b761837eda78795e1d
5
5
  SHA512:
6
- metadata.gz: d9bcdae7626f0a63ec77f6558d3e338043ea5152bcfb58e5a6ac86bd44efb05e8cd71aa825621560d5f1ba95c7605bb1c160b0ba79c21cb5e7e85a5616f3e323
7
- data.tar.gz: fd2bf8c73508327ed756e4da2f82af18e8793de8237ecdbc42e3f7ac92301b1a449c547950100f6629153ed5ee49eff991da3a6e7306bd9a95bca34e7b9ec9e9
6
+ metadata.gz: 63da6c9c80a1b8ca054cb5ed8d5e021505e2f90b8774097817402bb8015a046ab29eeba34a0cdb421c4b40a4bf3aad3f0d134c458efd3056d3a5bdad78189d2b
7
+ data.tar.gz: 39350cfa70debae80bafe58d4591fed4ccb025a36864dc64fb2d7fc74bcec1d95f537105fcaf3ed75c20efefe3a766bbd8c344158a21add5694f8e3a2fe430cb
data/.gitignore CHANGED
@@ -3,7 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
6
+ .ruby-version
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
@@ -1,7 +1,12 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
- - "1.9.2"
4
- - "1.9.3"
5
- - "2.0.0"
6
- - jruby-19mode # JRuby in 1.9 mode
7
- - rbx-19mode
4
+ - '2.5'
5
+ - '2.6'
6
+ - '2.7'
7
+ # - jruby
8
+ # - rbx-3
9
+ before_install: gem install bundler -v 2.1.4
10
+ notifications:
11
+ slack:
12
+ secure: V4ek++4NqkVvL44PrDrycKUdIVIGUM5lkBydkyNl1CU8+wf2l/GzeMnI/d8rF+ok8DgWTvEoEr15+/d9tzec34M91GbVnHI5+MeOWuZcp7LDVvKMZc67kZcHqplurBFcKuTty8AJgGmLOjUqmlrXoXSceTachaqdU/0u1MQV2Sg=
data/Gemfile CHANGED
@@ -2,3 +2,14 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in weather-report.gemspec
4
4
  gemspec
5
+
6
+ gem 'nokogiri'
7
+ gem 'slop', '~> 3.6.0'
8
+
9
+ group :development do
10
+ gem "rake"
11
+ gem "guard"
12
+ gem "guard-minitest"
13
+ gem "rb-fsevent"
14
+ gem "minitest-reporters"
15
+ end
@@ -0,0 +1,71 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ weather-report (0.4.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ansi (1.5.0)
10
+ builder (3.2.4)
11
+ coderay (1.1.3)
12
+ ffi (1.13.1)
13
+ formatador (0.2.5)
14
+ guard (2.16.2)
15
+ formatador (>= 0.2.4)
16
+ listen (>= 2.7, < 4.0)
17
+ lumberjack (>= 1.0.12, < 2.0)
18
+ nenv (~> 0.1)
19
+ notiffany (~> 0.0)
20
+ pry (>= 0.9.12)
21
+ shellany (~> 0.0)
22
+ thor (>= 0.18.1)
23
+ guard-compat (1.2.1)
24
+ guard-minitest (2.4.6)
25
+ guard-compat (~> 1.2)
26
+ minitest (>= 3.0)
27
+ listen (3.2.1)
28
+ rb-fsevent (~> 0.10, >= 0.10.3)
29
+ rb-inotify (~> 0.9, >= 0.9.10)
30
+ lumberjack (1.2.8)
31
+ method_source (1.0.0)
32
+ mini_portile2 (2.4.0)
33
+ minitest (5.14.2)
34
+ minitest-reporters (1.4.2)
35
+ ansi
36
+ builder
37
+ minitest (>= 5.0)
38
+ ruby-progressbar
39
+ nenv (0.3.0)
40
+ nokogiri (1.10.10)
41
+ mini_portile2 (~> 2.4.0)
42
+ notiffany (0.1.3)
43
+ nenv (~> 0.1)
44
+ shellany (~> 0.0)
45
+ pry (0.13.1)
46
+ coderay (~> 1.1)
47
+ method_source (~> 1.0)
48
+ rake (13.0.1)
49
+ rb-fsevent (0.10.4)
50
+ rb-inotify (0.10.1)
51
+ ffi (~> 1.0)
52
+ ruby-progressbar (1.10.1)
53
+ shellany (0.0.1)
54
+ slop (3.6.0)
55
+ thor (1.0.1)
56
+
57
+ PLATFORMS
58
+ ruby
59
+
60
+ DEPENDENCIES
61
+ guard
62
+ guard-minitest
63
+ minitest-reporters
64
+ nokogiri
65
+ rake
66
+ rb-fsevent
67
+ slop (~> 3.6.0)
68
+ weather-report!
69
+
70
+ BUNDLED WITH
71
+ 2.1.4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Weather Report
2
2
 
3
- A Ruby library and CLI to get Japanese Weather via Livedoor Weather Web Service(http://weather.livedoor.com/weather_hacks/webservice).
3
+ A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/) which is compatible with Livedoor Weather Web Service.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/zakuni/weather-report.png)](https://travis-ci.org/zakuni/weather-report)
6
6
 
@@ -1,42 +1,46 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require 'rubygems'
4
- $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
5
- require 'weather-report'
6
- require 'optparse'
7
- require 'ostruct'
8
2
 
9
- options = OpenStruct.new
3
+ require 'bundler/setup'
4
+ require 'weather-report'
5
+ require 'slop'
10
6
 
11
- opt_parser = OptionParser.new do |opts|
12
- opts.banner = 'Usage: weather-report CITY [options]'
7
+ opts = Slop.parse(help: true) do
8
+ banner 'Usage: weather-report CITY [options]'
13
9
 
14
- opts.separator ""
15
- opts.separator "Common options:"
10
+ separator ""
11
+ separator "Common options:"
16
12
 
17
- opts.on_tail("-h", "--help", "Show this message") do
18
- puts opts
13
+ on :l, :list, 'Show city list' do
14
+ WeatherReport.cities.each do |city|
15
+ puts city
16
+ end
19
17
  exit
20
18
  end
21
19
 
22
- opts.on_tail("-v", "--version", "Show version") do
20
+ on :v, :version, "Show version" do
23
21
  puts "weather-report v#{WeatherReport::VERSION}"
24
22
  exit
25
23
  end
26
24
  end
27
25
 
26
+ exit if opts.help?
27
+
28
28
  if ARGV.empty?
29
- puts opt_parser.help
30
- exit 1
29
+ puts opts.help
30
+ exit
31
31
  end
32
32
 
33
- city = opt_parser.parse(ARGV)
33
+ city = ARGV
34
34
  weather = WeatherReport::Weather.new(WeatherReport::Weather.request_cityid(*city))
35
35
 
36
36
  [weather.today, weather.tomorrow, weather.day_after_tomorrow].each do |day|
37
- print "#{day.date.year}年#{day.date.month}月#{day.date.day}日の天気 #{day.telop}"
38
- print " 最低気温#{day.temperature_min}度" if day.temperature_min
39
- print " 最高気温#{day.temperature_max}度" if day.temperature_max
40
- puts
37
+ begin
38
+ print "#{day.date.year}年#{day.date.month}月#{day.date.day}日の天気 #{day.telop}"
39
+ print " 最低気温#{day.temperature_min}度" if day.temperature_min
40
+ print " 最高気温#{day.temperature_max}度" if day.temperature_max
41
+ puts
42
+ rescue NoMethodError
43
+ next
44
+ end
41
45
  end
42
46
  puts weather.link
@@ -8,10 +8,22 @@ require 'weather-report/day'
8
8
  require 'weather-report/version'
9
9
 
10
10
  module WeatherReport
11
- class WeatherReportError < StandardError; end
11
+ class Error < StandardError; end
12
+ class ArgumentError < Error; end
13
+ class NoCityError < Error; end
14
+ class NoForecastError < Error; end
12
15
 
13
16
  # @return [Weather] get weather of the city
14
17
  def self.get(city_name)
15
18
  Weather.new(Weather.request_cityid(city_name))
16
19
  end
20
+
21
+ # @return [Array] get city list
22
+ def self.cities
23
+ proxy = Weather.parse_proxy(ENV["http_proxy"])
24
+ doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
25
+ doc.xpath("//city").map{|i|
26
+ i["title"]
27
+ }
28
+ end
17
29
  end
@@ -5,8 +5,19 @@ module WeatherReport
5
5
  attr_reader :date, :telop, :temperature_min, :temperature_max
6
6
 
7
7
  def initialize(forecasts, dateLabel)
8
- @forecast = forecast(forecasts, dateLabel)
9
- end
8
+ raise ArgumentError, "dateLabel must be 今日, 明日 or 明後日" unless dateLabel =~ /(今日|明日|明後日)/
9
+
10
+ forecast = forecast(forecasts, dateLabel)
11
+ @telop = forecast['telop']
12
+ year, month, day = forecast['date'].split('-')
13
+ @date = Date.new(year.to_i, month.to_i, day.to_i)
14
+
15
+ temperature = forecast['temperature']
16
+ min = temperature['min']
17
+ max = temperature['max']
18
+ @temperature_min = min ? min['celsius'].to_i : nil
19
+ @temperature_max = max ? max['celsius'].to_i : nil
20
+ end
10
21
 
11
22
  # @return [Boolean] return true if it rains.
12
23
  def rain?
@@ -23,33 +34,6 @@ module WeatherReport
23
34
  telop =~ /[雨雪霙雹]/ ? true : false
24
35
  end
25
36
 
26
- # @return [Date] the date
27
- def date
28
- year, month, day = @forecast["date"].split('-')
29
- @date ||= Date.new(year.to_i, month.to_i, day.to_i)
30
- end
31
-
32
- # @return [String] the telop
33
- def telop
34
- @telop ||= @forecast["telop"]
35
- end
36
-
37
- # @return [Fixnum] the minimum temperature.
38
- # Temperature of today could be nil.
39
- def temperature_min
40
- min = @forecast["temperature"]["min"]
41
- @temperature ||=
42
- min ? min["celsius"].to_i : nil
43
- end
44
-
45
- # @return [Fixnum] the maximum temperature.
46
- # Temperature of today could be nil.
47
- def temperature_max
48
- max = @forecast["temperature"]["max"]
49
- @temperature_max ||=
50
- max ? max["celsius"].to_i : nil
51
- end
52
-
53
37
  # @return [Hash] return with hash format.
54
38
  def to_h
55
39
  {
@@ -64,6 +48,7 @@ module WeatherReport
64
48
 
65
49
  def forecast(forecasts, dateLabel)
66
50
  forecasts["forecasts"].each {|elem| return elem if elem["dateLabel"] == dateLabel}
51
+ raise NoForecastError
67
52
  end
68
53
  end
69
54
  end
@@ -1,3 +1,3 @@
1
1
  module WeatherReport
2
- VERSION = "0.3.5"
2
+ VERSION = '0.4.2'.freeze
3
3
  end
@@ -5,18 +5,17 @@ module WeatherReport
5
5
  attr_reader :today, :tomorrow, :day_after_tomorrow
6
6
 
7
7
  def initialize(city_id)
8
- @uri = URI.parse("http://weather.livedoor.com/forecast/webservice/json/v1?city=#{city_id}")
8
+ @uri = URI.parse("https://weather.tsukumijima.net/api/forecast?city=#{city_id}")
9
9
  end
10
10
 
11
11
  # @return [String] the id of given city
12
12
  def self.request_cityid(city_name)
13
+ raise ArgumentError, "City name must be String." unless city_name.kind_of?(String)
13
14
  proxy = Weather.parse_proxy(ENV["http_proxy"])
14
- doc = Nokogiri::XML(open("http://weather.livedoor.com/forecast/rss/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
15
+ doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
15
16
  doc.search("//city[@title='#{city_name}']").attr("id").value
16
17
  rescue NoMethodError
17
- raise WeatherReportError, "It seems like city #{city_name} does not exist.\nPlease look at http://weather.livedoor.com/forecast/rss/primary_area.xml for city list."
18
- rescue => e
19
- raise WeatherReportError
18
+ raise NoCityError, "It seems like city #{city_name} does not exist.\nPlease look at https://weather.tsukumijima.net/primary_area.xml for city list."
20
19
  end
21
20
 
22
21
  def self.parse_proxy(proxy)
@@ -27,8 +26,8 @@ module WeatherReport
27
26
  host, port = server.split(":")
28
27
  account = raccount.nil? ? "" : raccount.reverse.split(":")
29
28
  user, pass = account
30
-
31
- proxy = OpenStruct.new({
29
+
30
+ proxy = OpenStruct.new({
32
31
  "server" => server.empty? ? nil : "http://#{server}",
33
32
  "user" => user.nil? ? "" : user,
34
33
  "pass" => pass.nil? ? "" : pass
@@ -75,7 +74,7 @@ module WeatherReport
75
74
  def read
76
75
  @response ||= JSON.parse(@uri.read)
77
76
  rescue => e
78
- raise WeatherReportError
77
+ raise Error
79
78
  end
80
79
  end
81
80
  end
@@ -0,0 +1,8 @@
1
+ module WeatherReport
2
+ class Day
3
+ attr_reader date: Date
4
+ attr_reader telop: String
5
+ attr_reader temperature_min: Integer?
6
+ attr_reader temperature_max: Integer?
7
+ end
8
+ end
@@ -1,28 +1,21 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'weather-report/version'
1
+ require_relative 'lib/weather-report/version'
5
2
 
6
3
  Gem::Specification.new do |spec|
7
4
  spec.name = "weather-report"
8
5
  spec.version = WeatherReport::VERSION
9
6
  spec.authors = ["zakuni"]
10
7
  spec.email = ["kunio038@gmail.com"]
11
- spec.description = %q{A Ruby library and CLI to get Japanese Weather via Livedoor Weather Web Service(http://weather.livedoor.com/weather_hacks/webservice).}
12
- spec.summary = %q{A Ruby client of Livedoor Weather Web Service.}
8
+
9
+ spec.description = %q{A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/) which is compatible with Livedoor Weather Web Service.}
10
+ spec.summary = %q{A Ruby client of 天気予報 API(https://weather.tsukumijima.net/).}
13
11
  spec.homepage = "https://github.com/zakuni/weather-report"
14
12
  spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
15
14
 
16
- spec.files = `git ls-files`.split($/)
15
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ end
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
20
  spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "nokogiri"
22
- spec.add_development_dependency "bundler", "~> 1.3"
23
- spec.add_development_dependency "rake"
24
- spec.add_development_dependency "guard-minitest"
25
- spec.add_development_dependency "rb-fsevent"
26
- spec.add_development_dependency "minitest-reporters"
27
- spec.add_development_dependency "growl"
28
21
  end
metadata CHANGED
@@ -1,115 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weather-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - zakuni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-11 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: nokogiri
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'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '1.3'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: guard-minitest
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rb-fsevent
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'
83
- - !ruby/object:Gem::Dependency
84
- name: minitest-reporters
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: growl
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
- description: A Ruby library and CLI to get Japanese Weather via Livedoor Weather Web
112
- Service(http://weather.livedoor.com/weather_hacks/webservice).
11
+ date: 2020-12-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/)
14
+ which is compatible with Livedoor Weather Web Service.
113
15
  email:
114
16
  - kunio038@gmail.com
115
17
  executables:
@@ -117,9 +19,10 @@ executables:
117
19
  extensions: []
118
20
  extra_rdoc_files: []
119
21
  files:
120
- - .gitignore
121
- - .travis.yml
22
+ - ".gitignore"
23
+ - ".travis.yml"
122
24
  - Gemfile
25
+ - Gemfile.lock
123
26
  - Guardfile
124
27
  - LICENSE.txt
125
28
  - README.md
@@ -129,10 +32,7 @@ files:
129
32
  - lib/weather-report/day.rb
130
33
  - lib/weather-report/version.rb
131
34
  - lib/weather-report/weather.rb
132
- - test/test_day.rb
133
- - test/test_helper.rb
134
- - test/test_weather-report.rb
135
- - test/test_weather.rb
35
+ - sig/day.rbs
136
36
  - weather-report.gemspec
137
37
  homepage: https://github.com/zakuni/weather-report
138
38
  licenses:
@@ -144,22 +44,17 @@ require_paths:
144
44
  - lib
145
45
  required_ruby_version: !ruby/object:Gem::Requirement
146
46
  requirements:
147
- - - '>='
47
+ - - ">="
148
48
  - !ruby/object:Gem::Version
149
- version: '0'
49
+ version: 2.3.0
150
50
  required_rubygems_version: !ruby/object:Gem::Requirement
151
51
  requirements:
152
- - - '>='
52
+ - - ">="
153
53
  - !ruby/object:Gem::Version
154
54
  version: '0'
155
55
  requirements: []
156
- rubyforge_project:
157
- rubygems_version: 2.0.3
56
+ rubygems_version: 3.1.2
158
57
  signing_key:
159
58
  specification_version: 4
160
- summary: A Ruby client of Livedoor Weather Web Service.
161
- test_files:
162
- - test/test_day.rb
163
- - test/test_helper.rb
164
- - test/test_weather-report.rb
165
- - test/test_weather.rb
59
+ summary: A Ruby client of 天気予報 API(https://weather.tsukumijima.net/).
60
+ test_files: []
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestDay < MiniTest::Unit::TestCase
6
- include WeatherReport
7
-
8
- def setup
9
- city_id = Weather.request_cityid("東京")
10
- uri = URI.parse("http://weather.livedoor.com/forecast/webservice/json/v1?city=#{city_id}")
11
- @forecasts = JSON.parse(uri.read)
12
- @day = Day.new(@forecasts, "明日")
13
- end
14
-
15
- def test_initialize
16
- assert_instance_of Day, Day.new(@forecasts, "明日")
17
- end
18
-
19
- def test_rain?
20
- assert_respond_to @day, :rain?
21
- end
22
-
23
- def test_snow?
24
- assert_respond_to @day, :snow?
25
- end
26
-
27
- def test_umbrella?
28
- assert_respond_to @day, :umbrella?
29
- end
30
-
31
- def test_date
32
- assert_respond_to @day, :date
33
- assert_instance_of Date, @day.date
34
- end
35
-
36
- def test_telop
37
- assert_respond_to @day, :telop
38
- assert_instance_of String, @day.telop
39
- end
40
-
41
- def test_temperature_min
42
- assert_respond_to @day, :temperature_min
43
- assert [Fixnum, NilClass].include? @day.temperature_min.class
44
- end
45
-
46
- def test_temperature_max
47
- assert_respond_to @day, :temperature_max
48
- assert [Fixnum, NilClass].include? @day.temperature_max.class
49
- end
50
-
51
- def test_to_h
52
- assert_respond_to @day, :to_h
53
- end
54
- end
@@ -1,9 +0,0 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
3
- require 'minitest/reporters'
4
- require 'minitest/pride'
5
-
6
- $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
7
- require 'weather-report'
8
-
9
- MiniTest::Reporters.use! [MiniTest::Reporters::DefaultReporter.new]
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestWeatherReport < MiniTest::Unit::TestCase
6
-
7
- def test_get
8
- assert_respond_to WeatherReport, :get
9
- assert_instance_of WeatherReport::Weather, WeatherReport.get("横浜")
10
- end
11
- end
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestWeather < MiniTest::Unit::TestCase
6
- include WeatherReport
7
-
8
- def setup
9
- @id = Weather.request_cityid("東京")
10
- @weather = Weather.new(@id)
11
- end
12
-
13
- def test_initialize
14
- assert_raises ArgumentError do
15
- Weather.new
16
- end
17
- assert_instance_of Weather, Weather.new(@id)
18
- end
19
-
20
- def test_today
21
- assert_respond_to @weather, :today
22
-
23
- today = @weather.today
24
- assert_instance_of Day, today
25
- end
26
-
27
- def test_tomorrow
28
- assert_respond_to @weather, :tomorrow
29
-
30
- tomorrow = @weather.tomorrow
31
- assert_instance_of Day, tomorrow
32
- end
33
-
34
- def test_day_after_tomorrow
35
- assert_respond_to @weather, :day_after_tomorrow
36
-
37
- day_after_tomorrow = @weather.day_after_tomorrow
38
- assert_instance_of Day, day_after_tomorrow
39
- end
40
-
41
- def test_link
42
- assert_respond_to @weather, :link
43
- assert_instance_of String, @weather.link
44
- end
45
-
46
- def test_request_cityid
47
- assert_respond_to Weather, :request_cityid
48
- assert_equal "130010", Weather.request_cityid("東京")
49
- assert_equal "140010", Weather.request_cityid("横浜")
50
- assert_raises(WeatherReportError) do
51
- Weather.request_cityid(nil)
52
- end
53
- end
54
-
55
- def test_to_h
56
- assert_respond_to @weather, :to_h
57
- end
58
- end