kandianying 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/spec/vieshow_spec.rb CHANGED
@@ -4,6 +4,18 @@ TEST_SITES = %w(05 12)
4
4
  FAIL_SITES = %w(0 16)
5
5
  TEST_INFO = %w(name table)
6
6
  FIXTURES = './spec/fixtures/vieshow_'
7
+ MONTHS = Date::ABBR_MONTHNAMES.compact
8
+ DAYS = Date::ABBR_DAYNAMES
9
+ PARTIAL_NAME = 4..10
10
+ HOUR_MIN = 11..15
11
+ AN_HOUR = 1 / 24.to_f
12
+ MIDNIGHT = %w(00 01 02 03)
13
+ TAIWAN_TIME = '+8'
14
+ GIVEN_DAY = (0..2).to_a
15
+ A_TO_Z = 'A'..'Z'
16
+ MAX_ALPHABET = 26
17
+ HOUR_PART = 0..1
18
+ ADD_24 = 24
7
19
 
8
20
  describe 'Get film information' do
9
21
  TEST_SITES.each do |site|
@@ -14,16 +26,81 @@ describe 'Get film information' do
14
26
  site_info = yml_load("#{FIXTURES}#{t}_#{site}.yml")
15
27
  compare = t == TEST_INFO[0] ? cinema.movie_names : cinema.movie_table
16
28
  site_info.must_equal compare
17
- end
18
- end
29
+ end; end; end
30
+ end
31
+ end
32
+
33
+ describe 'Get show times for a film' do
34
+ TEST_SITES.each do |site|
35
+ it 'should get viewing times for this film' do
36
+ VCR.use_cassette("vieshow_table_#{site}") do
37
+ cinema = HsinChuMovie::Vieshow.new(site.to_i)
38
+ one_movie = yml_load("#{FIXTURES}name_#{site}.yml").sample[PARTIAL_NAME]
39
+ # Films are saved as UPPERCASE but search should pass any case
40
+ cinema.film_times(one_movie.downcase).each do |film, date_times|
41
+ film.must_include one_movie
42
+ date_times.keys.each do |date|
43
+ words_in_date = date.split
44
+ MONTHS.must_include words_in_date.first
45
+ DAYS.must_include words_in_date.last
46
+ end; end; end
19
47
  end
20
48
  end
49
+ TEST_SITES.each do |site|
50
+ it 'should return empty array for random string' do
51
+ VCR.use_cassette("vieshow_table_#{site}") do
52
+ cinema = HsinChuMovie::Vieshow.new(site.to_i)
53
+ one_movie = (PARTIAL_NAME).map { A_TO_Z.to_a[rand(MAX_ALPHABET)] }.join
54
+ cinema.film_times(one_movie).must_be_empty
55
+ end; end
56
+ end
57
+ end
58
+
59
+ describe 'Get films after a given time on given day' do
60
+ TEST_SITES.each do |site|
61
+ it "should only return films after a time for #{site}" do
62
+ VCR.use_cassette("vieshow_table_#{site}") do
63
+ cinema = HsinChuMovie::Vieshow.new(site.to_i)
64
+ time = DateTime.now.new_offset(TAIWAN_TIME)
65
+ time += GIVEN_DAY.sample
66
+ time_s = time.to_s
67
+ day_films = cinema.films_on_day(time_s)
68
+ after_films = cinema.films_after_time(time_s)
69
+ # comparison_time is an hour earlier than specified time
70
+ comparison_time = (time - AN_HOUR).to_s[HOUR_MIN]
71
+ day_films.each do |film, date_times|
72
+ date_times.each do |date, show_times|
73
+ if after_films[film].nil?
74
+ # If empty, all show times must be less than comparison time
75
+ show_times.each do |show_time|
76
+ show_time.must_be :<, comparison_time
77
+ end
78
+ else
79
+ after_show_times = after_films[film][date]
80
+ after_show_times.each do |ast|
81
+ # On day show times must include after request show times
82
+ show_times.must_include ast
83
+ # After show times must be greater than comparison time
84
+ if (ast < comparison_time) &&
85
+ (MIDNIGHT.include? ast[HOUR_PART])
86
+ # Movies airing from midnight onwards are group with past day
87
+ ast[HOUR_PART] = "#{ast[HOUR_PART].to_i + ADD_24}"
88
+ end
89
+ ast.must_be :>=, comparison_time
90
+ end
91
+ show_times -= after_films[film][date]
92
+ # Any show time not returned must be less than comparison time
93
+ show_times.each do |show_time|
94
+ show_time.must_be :<, comparison_time
95
+ end
96
+ end; end; end; end; end
97
+ end
21
98
  end
22
99
 
23
100
  describe 'Outside of 1 and 14 must fail' do
24
- # FAIL_SITES.each do |site|
25
- # it "must fail for #{site}" do
26
- # # HsinChuMovie::Vieshow.new(site.to_i).must_fail
27
- # end
28
- # end
101
+ FAIL_SITES.each do |site|
102
+ it "must fail for #{site}" do
103
+ proc { HsinChuMovie::Vieshow.new(site.to_i) }.must_raise RuntimeError
104
+ end
105
+ end
29
106
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kandianying
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - stonegold546
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-10-28 00:00:00.000000000 Z
14
+ date: 2015-11-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: minitest
@@ -106,6 +106,8 @@ files:
106
106
  - lib/kandianying/ambassador.rb
107
107
  - lib/kandianying/version.rb
108
108
  - lib/kandianying/vieshow.rb
109
+ - lib/kandianying/vieshow_scrape.rb
110
+ - lib/kandianying/vieshow_search.rb
109
111
  - spec/ambassador_spec.rb
110
112
  - spec/fixtures/ambassador_name_38897fa9-094f-4e63-9d6d-c52408438cb6.yml
111
113
  - spec/fixtures/ambassador_table_38897fa9-094f-4e63-9d6d-c52408438cb6.yml