weatherscout 0.2.0 → 0.3.1

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,117 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.cwb.gov.tw/V7/forecast/taiwan/inc/city/Hsinchu_City.htm
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Last-Modified:
22
+ - Fri, 22 Jan 2016 14:32:35 GMT
23
+ Accept-Ranges:
24
+ - bytes
25
+ Content-Length:
26
+ - '3089'
27
+ Content-Type:
28
+ - text/html
29
+ Date:
30
+ - Fri, 22 Jan 2016 17:59:06 GMT
31
+ Server:
32
+ - Apache
33
+ Etag:
34
+ - '"1a7e0-c11-529ed171826c0"'
35
+ Age:
36
+ - '5'
37
+ X-Cache:
38
+ - HIT from w3accel
39
+ Via:
40
+ - 1.1 w3accel:8100 (squid/2.7.STABLE9)
41
+ Connection:
42
+ - close
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: !binary |-
46
+ PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
47
+ L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CjxkaXYgaWQ9ImZvcmVjYXN0MCI+
48
+ CjxoMyBjbGFzcz0iQ2VudGVyVGl0bGUiPu+8kemAsemgkOWgsTxzcGFuIGNs
49
+ YXNzPSJJc3N1ZWQiPueZvOW4g+aZgumWk++8mjIwMTYvMDEvMjIgMjM6MDA8
50
+ L3NwYW4+PCEtLeeZvOW4g+aZgumWk++8miAgLS0+PC9oMz4KPCEtLUNlbnRl
51
+ clRpdGxlIC0tPgo8dGFibGUgY2xhc3M9IkZjc3RCb3hUYWJsZTAxIiBzdW1t
52
+ YXJ5PSLnt6jmjpLnlKgiPgo8dGhlYWQ+CgkJCTx0cj4KCQkJPHRoIHdpZHRo
53
+ PSIyMyUiPuaWsOerueW4gjwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzIzPGJy
54
+ IC8+PGZvbnQgY29sb3I9I0NDMzM2Nj7mmJ/mnJ/lha08L2ZvbnQ+PC90aD48
55
+ dGggd2lkdGg9IjExJSI+MDEvMjQ8YnIgLz48Zm9udCBjb2xvcj0jQ0MzMzY2
56
+ PuaYn+acn+aXpTwvZm9udD48L3RoPjx0aCB3aWR0aD0iMTElIj4wMS8yNTxi
57
+ ciAvPuaYn+acn+S4gDwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzI2PGJyIC8+
58
+ 5pif5pyf5LqMPC90aD48dGggd2lkdGg9IjExJSI+MDEvMjc8YnIgLz7mmJ/m
59
+ nJ/kuIk8L3RoPjx0aCB3aWR0aD0iMTElIj4wMS8yODxiciAvPuaYn+acn+Wb
60
+ mzwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzI5PGJyIC8+5pif5pyf5LqUPC90
61
+ aD48L3RoZWFkPjx0Ym9keT48dHI+PHRoIG5vd3JhcD0ibm93cmFwIiBjbGFz
62
+ cz0ibnVtIj7nmb3lpKk8L3RoPjx0ZCBub3dyYXA9Im5vd3JhcCIgY2xhc3M9
63
+ Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4vLi4vc3ltYm9sL3dlYXRoZXIv
64
+ Z2lmL2RheS8yNi5naWYiIGFsdD0i6Zmw5pmC5aSa6Zuy6Zmj6ZuoIiB0aXRs
65
+ ZT0i6Zmw5pmC5aSa6Zuy6Zmj6ZuoIiAvPjxiciAvPgoJCQkJICAgOCB+IDEy
66
+ PC90ZD48dGQgbm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAg
67
+ PGltZyBzcmM9Ii4uLy4uL3N5bWJvbC93ZWF0aGVyL2dpZi9kYXkvMTIuZ2lm
68
+ IiBhbHQ9IuWkmumbsuefreaaq+mbqCIgdGl0bGU9IuWkmumbsuefreaaq+mb
69
+ qCIgLz48YnIgLz4KCQkJCSAgIDUgfiA3PC90ZD48dGQgbm93cmFwPSJub3dy
70
+ YXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4uLy4uL3N5bWJv
71
+ bC93ZWF0aGVyL2dpZi9kYXkvMDcuZ2lmIiBhbHQ9IuWkmumbsuaZguaZtCIg
72
+ dGl0bGU9IuWkmumbsuaZguaZtCIgLz48YnIgLz4KCQkJCSAgIDQgfiAxMDwv
73
+ dGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxp
74
+ bWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYvZGF5LzA3LmdpZiIg
75
+ YWx0PSLlpJrpm7LmmYLmmbQiIHRpdGxlPSLlpJrpm7LmmYLmmbQiIC8+PGJy
76
+ IC8+CgkJCQkgICA4IH4gMTg8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCIgY2xh
77
+ c3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4vLi4vc3ltYm9sL3dlYXRo
78
+ ZXIvZ2lmL2RheS8wNS5naWYiIGFsdD0i5aSa6Zuy5pmC6ZmwIiB0aXRsZT0i
79
+ 5aSa6Zuy5pmC6ZmwIiAvPjxiciAvPgoJCQkJICAgMTIgfiAxOTwvdGQ+PHRk
80
+ IG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxpbWcgc3Jj
81
+ PSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYvZGF5LzEyLmdpZiIgYWx0PSLl
82
+ pJrpm7LmmYLpmbDnn63mmqvpmaPpm6giIHRpdGxlPSLlpJrpm7LmmYLpmbDn
83
+ n63mmqvpmaPpm6giIC8+PGJyIC8+CgkJCQkgICAxNSB+IDE4PC90ZD48dGQg
84
+ bm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9
85
+ Ii4uLy4uL3N5bWJvbC93ZWF0aGVyL2dpZi9kYXkvMjYuZ2lmIiBhbHQ9IumZ
86
+ sOefreaaq+mZo+mbqCIgdGl0bGU9IumZsOefreaaq+mZo+mbqCIgLz48YnIg
87
+ Lz4KCQkJCSAgIDE1IH4gMTg8L3RkPiAgICAgICAgICAgICAgPC90cj48dGgg
88
+ bm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPuaZmuS4ijwvdGg+PHRkIG5v
89
+ d3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxpbWcgc3JjPSIu
90
+ Li8uLi9zeW1ib2wvd2VhdGhlci9naWYvbmlnaHQvMjYuZ2lmIiBhbHQ9IumZ
91
+ sOaZguWkmumbsuefreaaq+mbqCIgdGl0bGU9IumZsOaZguWkmumbsuefreaa
92
+ q+mbqCIgLz48YnIgLz4KCQkJCSAgIDYgfiA4PC90ZD48dGQgbm93cmFwPSJu
93
+ b3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4uLy4uL3N5
94
+ bWJvbC93ZWF0aGVyL2dpZi9uaWdodC8wMi5naWYiIGFsdD0i5aSa6ZuyIiB0
95
+ aXRsZT0i5aSa6ZuyIiAvPjxiciAvPgoJCQkJICAgNCB+IDU8L3RkPjx0ZCBu
96
+ b3dyYXA9Im5vd3JhcCIgY2xhc3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0i
97
+ Li4vLi4vc3ltYm9sL3dlYXRoZXIvZ2lmL25pZ2h0LzA4LmdpZiIgYWx0PSLm
98
+ mbTmmYLlpJrpm7IiIHRpdGxlPSLmmbTmmYLlpJrpm7IiIC8+PGJyIC8+CgkJ
99
+ CQkgICA4IH4gOTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVt
100
+ Ij4KCQkJCSAgIDxpbWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYv
101
+ bmlnaHQvMDguZ2lmIiBhbHQ9IuaZtOaZguWkmumbsiIgdGl0bGU9IuaZtOaZ
102
+ guWkmumbsiIgLz48YnIgLz4KCQkJCSAgIDEzIH4gMTU8L3RkPjx0ZCBub3dy
103
+ YXA9Im5vd3JhcCIgY2xhc3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4v
104
+ Li4vc3ltYm9sL3dlYXRoZXIvZ2lmL25pZ2h0LzI2LmdpZiIgYWx0PSLpmbDm
105
+ mYLlpJrpm7Lnn63mmqvpmaPpm6giIHRpdGxlPSLpmbDmmYLlpJrpm7Lnn63m
106
+ mqvpmaPpm6giIC8+PGJyIC8+CgkJCQkgICAxNSB+IDE2PC90ZD48dGQgbm93
107
+ cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4u
108
+ Ly4uL3N5bWJvbC93ZWF0aGVyL2dpZi9uaWdodC8yNi5naWYiIGFsdD0i6Zmw
109
+ 55+t5pqr6Zmj6ZuoIiB0aXRsZT0i6Zmw55+t5pqr6Zmj6ZuoIiAvPjxiciAv
110
+ PgoJCQkJICAgMTUgfiAxNjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFz
111
+ cz0ibnVtIj4KCQkJCSAgIDxpbWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhl
112
+ ci9naWYvbmlnaHQvMDMuZ2lmIiBhbHQ9IumZsOWkqSIgdGl0bGU9IumZsOWk
113
+ qSIgLz48YnIgLz4KCQkJCSAgIDE1IH4gMTY8L3RkPiAgICAgICAgICAgICAg
114
+ PC90cj48L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4=
115
+ http_version:
116
+ recorded_at: Fri, 22 Jan 2016 17:59:11 GMT
117
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,67 @@
1
+ require 'vcr'
2
+ require 'webmock'
3
+ require 'minitest/autorun'
4
+ require './lib/weatherscout.rb'
5
+
6
+ WEEKLY_CITY = "新竹"
7
+
8
+ VCR.configure do |config|
9
+ config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
10
+ config.hook_into :webmock
11
+ end
12
+
13
+ VCR.use_cassette('weeklyweather') do
14
+ weekly_weather = WeatherScraper::WeeklyWeather.new(WEEKLY_CITY)
15
+
16
+ describe 'Weekly weather desc scrap' do
17
+
18
+ it 'should return city name' do
19
+ city = weekly_weather.city
20
+ city.must_be_instance_of String
21
+ end
22
+
23
+ it 'has the right number of period weathers' do
24
+ weathers = weekly_weather.weathers
25
+ weathers.size.must_equal 7
26
+ end
27
+
28
+ it 'should return the timestamp in correct format' do
29
+ timestamps = weekly_weather.weathers.keys
30
+ timestamps.each do |timestamp|
31
+ timestamp.must_match /\d\d\/\d\d.../
32
+ end
33
+ end
34
+
35
+ it 'should return day temperature' do
36
+ weathers = weekly_weather.weathers.values
37
+ weathers.each do |weather|
38
+ day_temperature = weather["day_temperature"]
39
+ day_temperature.must_match /(-|\d)\d*\s~\s(-|\d)\d*/
40
+ end
41
+ end
42
+
43
+ it 'should return night temperature' do
44
+ weathers = weekly_weather.weathers.values
45
+ weathers.each do |weather|
46
+ night_temperature = weather["night_temperature"]
47
+ night_temperature.must_match /(-|\d)\d*\s~\s(-|\d)\d*/
48
+ end
49
+ end
50
+
51
+ it 'should return day condition' do
52
+ weathers = weekly_weather.weathers.values
53
+ weathers.each do |weather|
54
+ day_condition = weather["day_condition"]
55
+ day_condition.must_be_instance_of String
56
+ end
57
+ end
58
+
59
+ it 'should return night condition' do
60
+ weathers = weekly_weather.weathers.values
61
+ weathers.each do |weather|
62
+ night_condition = weather["night_condition"]
63
+ night_condition.must_be_instance_of String
64
+ end
65
+ end
66
+ end
67
+ end
data/weatherscout.gemspec CHANGED
@@ -1,5 +1,5 @@
1
1
  $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
- require 'weatherdesc/version'
2
+ require 'weathers/version'
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'weatherscout'
5
5
  s.version = WeatherDesc::VERSION
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.summary = 'Tell you the weather of Taiwan'
9
9
  s.description = 'You can find the weather of the major city in Taiwan'
10
10
  s.authors = ['Vicky Lee']
11
- s.email = ['lch82327@gmail.com']
11
+ s.email = ['lch82327@gmail.com']
12
12
  s.files = `git ls-files`.split("\n")
13
13
  s.test_files = `git ls-files spec/*`.split("\n")
14
14
  s.homepage = 'https://github.com/vicky-sunshine/weather-scout-scraper'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weatherscout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vicky Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-21 00:00:00.000000000 Z
11
+ date: 2016-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -67,10 +67,16 @@ files:
67
67
  - README.md
68
68
  - Rakefile
69
69
  - bin/weatherscout
70
- - lib/weatherdesc/daily_weather.rb
71
- - lib/weatherdesc/version.rb
70
+ - lib/weathers/version.rb
71
+ - lib/weathers/weather_scraper.rb
72
+ - lib/weathers/weather_scraper/daily_weather.rb
73
+ - lib/weathers/weather_scraper/name_mapping.rb
74
+ - lib/weathers/weather_scraper/weekly_weather.rb
72
75
  - lib/weatherscout.rb
73
76
  - spec/dailyweather_spec.rb
77
+ - spec/fixtures/vcr_cassettes/dailytweather.yml
78
+ - spec/fixtures/vcr_cassettes/weeklyweather.yml
79
+ - spec/weeklyweather_spec.rb
74
80
  - weatherscout.gemspec
75
81
  homepage: https://github.com/vicky-sunshine/weather-scout-scraper
76
82
  licenses:
@@ -98,3 +104,6 @@ specification_version: 4
98
104
  summary: Tell you the weather of Taiwan
99
105
  test_files:
100
106
  - spec/dailyweather_spec.rb
107
+ - spec/fixtures/vcr_cassettes/dailytweather.yml
108
+ - spec/fixtures/vcr_cassettes/weeklyweather.yml
109
+ - spec/weeklyweather_spec.rb
@@ -1,5 +0,0 @@
1
- # Versioning
2
- module WeatherDesc
3
- VERSION = '0.2.0'
4
- DATE = '2016-01-21'
5
- end