movies_client 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/lib/movies_client.rb CHANGED
@@ -1,449 +1,90 @@
1
- #ENCODING:UTF-8
2
- require "movies_client/version"
3
- require "roo"
4
- require "spreadsheet"
5
- require "themoviedb"
6
-
7
- module MoviesClient
8
-
9
- # defaults information
10
- @config = { :prog => "../../data/PROG_GB_JUILLET_2014.ods",
11
- :key => ""
12
- }
13
-
14
- def self.configure_file_path(path)
15
- @config[:prog] = path
16
- end
17
-
18
- def self.configure_api_key(key)
19
- @config[:key] = key
20
- end
21
-
22
- def self.parse_ods
23
- #open ods file with UTF_8 encoding option
24
- s = Roo::OpenOffice.new(@config[:prog], ods_options: {encoding: Encoding::UTF_8})
25
-
26
- @result = {}
27
- @daily_schedule = {}
28
- day = {}
29
- film = {}
30
- lastrow = s.last_row
31
- lastcolumn = s.last_column
32
- y = 2
33
-
34
- @result[:mois] = s.cell(1,3)
35
- @result[:cinema1] = s.cell(1,2)
36
- @result[:cinema2] = s.cell(1,5)
37
-
38
- while y != lastrow do
39
- x = 1
40
-
41
- while x != lastcolumn+1 do
42
-
43
- value = s.cell(y,x)
44
-
45
- if s.cell(y, 3).nil?
46
- key = s.cell(y-1, 3).gsub(/[^\d]/, '').to_s
47
- flagline = true # second line of a date
48
- else
49
- key = s.cell(y, 3).gsub(/[^\d]/, '').to_s
50
- flagline = false #first line of a date
51
- end
52
-
53
- case x
54
- when 1
55
- if flagline
56
- day[:horaire2] = value
57
- else
58
- day[:horaire1] = value
59
- end
60
- when 2
61
- if flagline
62
- day[:film3] = value
63
- unless film.has_key?(value)
64
- unless value.nil?
65
- if value.include? ':'
66
- value.sub!(':', ' ')
67
- end
68
- if value.include? "'"
69
- value.sub!("'", ' ')
70
- end
71
- if value.include? ","
72
- value.sub!(",", '')
73
- end
74
- value_escaped = CGI::escape(value)
75
- film.store(value,[value_escaped])
76
- end
77
- end
78
- else
79
- day[:film1] = value
80
- unless film.has_key?(value)
81
- unless value.nil?
82
- if value.include? ':'
83
- value.sub!(':', ' ')
84
- end
85
- if value.include? "'"
86
- value.sub!("'", ' ')
87
- end
88
- if value.include? ","
89
- value.sub!(",", '')
90
- end
91
- value_escaped = CGI::escape(value)
92
- film.store(value,[value_escaped])
93
- end
94
- end
95
- end
96
- when 3
97
- unless flagline
98
- day[:date] = value
99
- end
100
- when 5
101
- if flagline
102
- day[:film4] = value
103
- unless film.has_key?(value)
104
- unless value.nil?
105
- if value.include? ':'
106
- value.sub!(':', ' ')
107
- end
108
- if value.include? "'"
109
- value.sub!("'", ' ')
110
- end
111
- if value.include? ","
112
- value.sub!(",", '')
113
- end
114
- value_escaped = CGI::escape(value)
115
- film.store(value,[value_escaped])
116
- end
117
- end
118
- else
119
- day[:film2] = value
120
- unless film.has_key?(value)
121
- unless value.nil?
122
- if value.include? ':'
123
- value.sub!(':', ' ')
124
- end
125
- if value.include? "'"
126
- value.sub!("'", ' ')
127
- end
128
- if value.include? ","
129
- value.sub!(",", '')
130
- end
131
- value_escaped = CGI::escape(value)
132
- film.store(value,[value_escaped])
133
- end
134
- end
135
- end
136
- else
137
- # cellule non traité
138
- end
139
- x += 1
140
- end
141
- @daily_schedule.store(key, day)
142
- if flagline
143
- day = {}
144
- end
145
- y +=1
146
- end
147
- @result.store( :daily_schedule, @daily_schedule)
148
- @result.store( :result, film)
149
- @result
150
- end
151
-
152
- def self.parse_ods_with_day(date)
153
- s = Roo::OpenOffice.new(@config[:prog], ods_options: {encoding: Encoding::UTF_8})
154
-
155
- @result = {}
156
- @daily_schedule = {}
157
- day = {}
158
- film = {}
159
- lastrow = s.last_row
160
- lastcolumn = s.last_column
161
- y = 2 # Start on line 2 to avoid header
162
-
163
- @result[:mois] = s.cell(1,3)
164
- @result[:cinema1] = s.cell(1,2)
165
- @result[:cinema2] = s.cell(1,5)
166
-
167
- while y != lastrow do
168
- x = 1
169
-
170
- while x != lastcolumn+1 do
171
-
172
- value = s.cell(y,x)
173
-
174
- if s.cell(y, 3).nil?
175
- key = s.cell(y-1, 3).gsub(/[^\d]/, '').to_s
176
- flagline = true # second line of a date
177
- else
178
- key = s.cell(y, 3).gsub(/[^\d]/, '').to_s
179
- flagline = false #first line of a date
180
- end
181
-
182
- case key
183
- when date
184
- case x
185
- when 1
186
- if flagline
187
- day[:horaire2] = value
188
- else
189
- day[:horaire1] = value
190
- end
191
- when 2
192
- if flagline == false
193
- day[:film1] = value
194
- unless film.has_key?(value)
195
- unless value.nil?
196
- if value.include? ':'
197
- value.sub!(':', ' ')
198
- end
199
- if value.include? "'"
200
- value.sub!("'", ' ')
201
- end
202
- if value.include? ","
203
- value.sub!(",", '')
204
- end
205
- value_escaped = CGI::escape(value)
206
- film.store(value,[value_escaped])
207
- end
208
- end
209
- elsif flagline == true
210
- day[:film3] = value
211
- unless film.has_key?(value)
212
- unless value.nil?
213
- if value.include? ':'
214
- value.sub!(':', ' ')
215
- end
216
- if value.include? "'"
217
- value.sub!("'", ' ')
218
- end
219
- if value.include? ","
220
- value.sub!(",", '')
221
- end
222
- value_escaped = CGI::escape(value)
223
- film.store(value,[value_escaped])
224
- end
225
- end
226
- end
227
- when 3
228
- unless flagline == true
229
- day[:date] = value
230
- end
231
- when 5
232
- if flagline == false
233
- day[:film2] = value
234
- unless film.has_key?(value)
235
- unless value.nil?
236
- if value.include? ':'
237
- value.sub!(':', ' ')
238
- end
239
- if value.include? "'"
240
- value.sub!("'", ' ')
241
- end
242
- if value.include? ","
243
- value.sub!(",", '')
244
- end
245
- value_escaped = CGI::escape(value)
246
- film.store(value,[value_escaped])
247
- end
248
- end
249
- elsif flagline == true
250
- day[:film4] = value
251
- unless film.has_key?(value)
252
- unless value.nil?
253
- if value.include? ':'
254
- value.sub!(':', ' ')
255
- end
256
- if value.include? "'"
257
- value.sub!("'", ' ')
258
- end
259
- if value.include? ","
260
- value.sub!(",", '')
261
- end
262
- value_escaped = CGI::escape(value)
263
- film.store(value,[value_escaped])
264
- end
265
- end
266
- end
267
- else
268
- # cellule non traité
269
- end
270
- else
271
- # date non traité
272
- end
273
- x += 1
274
- end
275
- unless day[:date].nil?
276
- @daily_schedule.store( key, day)
277
- end
278
- if flagline == true
279
- day = {}
280
- end
281
- y +=1
282
- end
283
- @result.store( :daily_schedule, @daily_schedule)
284
- @result.store( :result, film)
285
- @result
286
- end
287
-
288
- def self.get_movie_details(id)
289
- Tmdb::Api.key(@config[:key])
290
- Tmdb::Api.language("fr")
291
- movie = Tmdb::Movie.detail(id)
292
- movie
293
- end
294
-
295
- def self.get_id_from_title(title)
296
- Tmdb::Api.key(@config[:key])
297
- Tmdb::Api.language("fr")
298
- @search = Tmdb::Search.new
299
- @search.resource('movie')
300
- @search.query(title)
301
- @movie = @search.fetch
302
- if @movie.nil?
303
- puts title
304
- else
305
- f = @movie.length
306
- i = 0
307
- while i != f
308
- unless @movie[i][:release_date] == ''
309
- date = Date.parse @movie[i][:release_date]
310
- if date.year == Date.today.year or date.year == Date.today.prev_year
311
- @movie_id = @movie[i][:id]
312
- else
313
- @movie_id = @movie[0][:id]
314
- end
315
- end
316
- i += 1
317
- end
318
- @movie_id
319
- end
320
- end
321
-
322
- def self.get_trailer(id)
323
- Tmdb::Api.key(@config[:key])
324
- Tmdb::Api.language("fr")
325
- trailer = Tmdb::Movie.trailers(id)
326
- link = ''
327
- unless trailer["youtube"][0].nil?
328
- source = trailer["youtube"][0]["source"]
329
- link = 'https://www.youtube.com/watch?v='+source.to_s
330
- end
331
- link
332
- end
333
-
334
- def self.get_credits(id)
335
- Tmdb::Api.key(@config[:key])
336
- Tmdb::Api.language("fr")
337
- @credit = Tmdb::Movie.credits(id)
338
- @credits = {}
339
- cred = {}
340
- @credit["crew"].each do |r|
341
- key = r["job"]
342
- value = r["name"]
343
- if cred.has_key?(key)
344
- cred[key] << value
345
- else
346
- cred.store(key, [value])
347
- end
348
- end
349
- @credits.store(:credit, cred)
350
- @credits
351
- end
352
-
353
- def self.get_movie_casts(id)
354
- Tmdb::Api.key(@config[:key])
355
- Tmdb::Api.language("fr")
356
- @casts = Tmdb::Movie.casts(id)
357
- @credit = Tmdb::Movie.credits(id)
358
- @casting = {}
359
- actor = {}
360
- i = 0
361
- if @casts.nil?
362
- actor = 'casting non disponible'
363
- @casting = actor
364
- else
365
- while i < 3
366
- unless @casts[i].nil?
367
- actor[:role] = @casts[i]["character"]
368
- actor[:name] = @casts[i]["name"]
369
- end
370
- @casting.store(i, actor)
371
- actor = {}
372
- i += 1
373
- end
374
- end
375
- @casting
376
- end
377
-
378
- def self.get_movie_info_from_list(list, size)
379
- result = {}
380
- @listresult = {}
381
- list.each_pair do |k, v|
382
- id = MoviesClient.get_id_from_title(v)
383
- movie = MoviesClient.get_movie_details(id)
384
- casting = MoviesClient.get_movie_casts(id)
385
- credits = MoviesClient.get_credits(id)
386
- trailer = MoviesClient.get_trailer(id)
387
-
388
- result[:id] = id
389
- result[:title_list] = k
390
- unless movie.title == ''
391
- result[:title] = movie.title
392
- end
393
- unless movie.overview == ''
394
- result[:synopsis] = movie.overview
395
- end
396
- unless movie.tagline == ''
397
- result[:tagline] = movie.tagline
398
- end
399
- unless movie.release_date == ''
400
- result[:release_date] = movie.release_date
401
- end
402
- unless trailer == ''
403
- result[:trailer] = trailer
404
- end
405
- unless movie.genres.nil?
406
- result[:genre] = movie.genres.collect { |g| g[:name] }
407
- end
408
- unless movie.poster_path.nil?
409
- result[:poster] = 'http://image.tmdb.org/t/p/'+size+'/'+movie.poster_path
410
- end
411
- unless casting.nil?
412
- result[:casting] = casting
413
- end
414
- unless credits.nil?
415
- result[:credits] = credits
416
- end
417
-
418
- @listresult.store(k, result)
419
- result = {}
420
- end
421
- @listresult
422
- end
423
-
424
- def self.assemble_prog_with_info(prog,info)
425
- prog.store(:result, info)
426
- prog
427
- end
428
-
429
- def self.get_info(path, key, size)
430
- MoviesClient.configure_file_path(path)
431
- MoviesClient.configure_api_key(key)
432
- @programme = MoviesClient.parse_ods
433
- @movie_info = MoviesClient.get_movie_info_from_list(@programme[:result], size)
434
- @result = MoviesClient.assemble_prog_with_info(@programme, @movie_info)
435
- @cinema_object = MoviesObject.new(@result)
436
- @cinema_object
437
- end
438
-
439
- def self.select_daily_program(path, key, size, date)
440
- MoviesClient.configure_file_path(path)
441
- MoviesClient.configure_api_key(key)
442
- @result = MoviesClient.parse_ods_with_day(date)
443
- @movie_info = MoviesClient.get_movie_info_from_list(@result[:result], size)
444
- @result = MoviesClient.assemble_prog_with_info(@result, @movie_info)
445
- @cinema_object = MoviesObject.new(@result)
446
- @cinema_object
447
- end
448
-
1
+ #ENCODING:UTF-8
2
+ require "movies_client/version"
3
+ require "movies_client/schedule_parser"
4
+ require "movies_client/tmdb_client"
5
+
6
+ module MoviesClient
7
+
8
+ # default information
9
+ @config = { :prog => "../../data/PROG_GB_JUILLET_2014.ods",
10
+ :key => ""
11
+ }
12
+
13
+ def self.configure_file_path(path)
14
+ @config[:prog] = path
15
+ end
16
+
17
+ def self.configure_api_key(key)
18
+ @config[:key] = key
19
+ end
20
+
21
+ def self.get_movie_info_from_list(list, size)
22
+ result = {}
23
+ listresult = {}
24
+ list.each_pair do |k, v|
25
+ id = TmdbClient.get_id_from_title(v, @config[:key])
26
+ movie = TmdbClient.get_movie_details(id, @config[:key])
27
+ casting = TmdbClient.get_movie_casts(id, @config[:key])
28
+ credits = TmdbClient.get_credits(id, @config[:key])
29
+ trailer = TmdbClient.get_trailer(id, @config[:key])
30
+
31
+ result[:id] = id
32
+ result[:title_list] = k
33
+ unless movie.title == ''
34
+ result[:title] = movie.title
35
+ end
36
+ unless movie.overview == ''
37
+ result[:synopsis] = movie.overview
38
+ end
39
+ unless movie.tagline == ''
40
+ result[:tagline] = movie.tagline
41
+ end
42
+ unless movie.release_date == ''
43
+ result[:release_date] = movie.release_date
44
+ end
45
+ unless trailer == ''
46
+ result[:trailer] = trailer
47
+ end
48
+ unless movie.genres.nil?
49
+ result[:genre] = movie.genres.collect { |g| g[:name] }
50
+ end
51
+ unless movie.poster_path.nil?
52
+ result[:poster] = 'http://image.tmdb.org/t/p/'+size+'/'+movie.poster_path
53
+ end
54
+ unless casting.nil?
55
+ result[:casting] = casting
56
+ end
57
+ unless credits.nil?
58
+ result[:credits] = credits
59
+ end
60
+
61
+ listresult.store(k, result)
62
+ result = {}
63
+ end
64
+ listresult
65
+ end
66
+
67
+ def self.assemble_prog_with_info(prog,info)
68
+ prog.store(:result, info)
69
+ prog
70
+ end
71
+
72
+ def self.get_info(path, key, size)
73
+ configure_file_path(path)
74
+ configure_api_key(key)
75
+ programme = ScheduleParser.parse_ods(@config[:prog])
76
+ movie_info = get_movie_info_from_list(programme[:result], size)
77
+ result = assemble_prog_with_info(programme, movie_info)
78
+ MoviesObject.new(result)
79
+ end
80
+
81
+ def self.select_daily_program(path, key, size, date)
82
+ MoviesClient.configure_file_path(path)
83
+ MoviesClient.configure_api_key(key)
84
+ result = ScheduleParser.parse_ods_with_day(@config[:prog], date)
85
+ movie_info = get_movie_info_from_list(result[:result], size)
86
+ result = assemble_prog_with_info(result, movie_info)
87
+ MoviesObject.new(result)
88
+ end
89
+
449
90
  end
@@ -0,0 +1,56 @@
1
+ #ENCODING:UTF-8
2
+ require "rubygems"
3
+ gem "shoulda"
4
+ require "test/unit"
5
+ require "shoulda"
6
+ require "movies_client/schedule_parser"
7
+
8
+ class ScheduleParserTest < Test::Unit::TestCase
9
+
10
+ setup do
11
+ @ods_path = File.join('..', '..', 'data', 'PROG_GB_JUILLET_2014.ods')
12
+ end
13
+
14
+ should 'parse ods file ' do
15
+ result_expected = {:mois=>"JUILLET", :cinema1=>"LES RHODOS VILLAGE", :cinema2=>"LE CHARMIEUX CHINAILLON", :daily_schedule=>{"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}, "6"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"DIM 6", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21H", :film3=>"DE TOUTES NOS FORCES", :film4=>"SOUS LES JUPES DES FILLES"}, "7"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"LUN 7", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"DE TOUTES NOS FORCES"}, "8"=>{:horaire1=>"17h30", :film1=>"BARBECUE", :date=>"MAR 8", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21H", :film3=>"BABYSITTING", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "9"=>{:horaire1=>"17h30", :film1=>"LA LISTE DE MES ENVIES", :date=>"MER 9", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"MALEFIQUE", :film4=>"BARBECUE"}, "10"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"JEU 10", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "11"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"VEN 11", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"DEUX JOURS UNE NUIT"}, "12"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"SAM 12", :film2=>"BABYSITTING", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "13"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"DIM 13 ", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>nil, :film3=>nil, :film4=>nil}, "14"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"LUN 14", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"LA LISTE DE MES ENVIES", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "15"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MAR 15", :film2=>"LA RITOURNELLE", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "16"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"MER 16", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"SOUS LES JUPES DES FILLES"}, "17"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"JEU 17", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "18"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"VEN 18", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "19"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"SAM 19", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "20"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"DIM 20", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "21"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"LUN 21", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "22"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"MAR 22", :film2=>"RIO 2", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"TRANSCENDANCE"}, "23"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"MER 23", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"LA RITOURNELLE"}, "24"=>{:horaire1=>"17h30", :film1=>"DE TOUTES NOS FORCES", :date=>"JEU 24", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "25"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"VEN 25", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "26"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"SAM 26", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "27"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"DIM 27", :film2=>"PLANES 2", :horaire2=>"21 H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "28"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"LUN 28", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "29"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"MAR 29", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "30"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MER 30", :film2=>"DE TOUTES NOS FORCES", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "31"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"JEU 31", :film2=>"DRAGONS 2"}}, :result=>{"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"], "DEUX JOURS UNE NUIT"=>["DEUX+JOURS+UNE+NUIT"], "DE TOUTES NOS FORCES"=>["DE+TOUTES+NOS+FORCES"], "QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"=>["QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F"], "RIO 2"=>["RIO+2"], "BARBECUE"=>["BARBECUE"], "LA LISTE DE MES ENVIES"=>["LA+LISTE+DE+MES+ENVIES"], "DRAGONS 2"=>["DRAGONS+2"], "MALEFIQUE"=>["MALEFIQUE"], "ON A FAILLI \u00CATRE AMIES"=>["ON+A+FAILLI+%C3%8ATRE+AMIES"], "LA RITOURNELLE"=>["LA+RITOURNELLE"], "LES VACANCES DU PETIT NICOLAS"=>["LES+VACANCES+DU+PETIT+NICOLAS"], "TRANSFORMERS L AGE DE L'EXTINCTION"=>["TRANSFORMERS+L+AGE+DE+L%27EXTINCTION"], "TRANSCENDANCE"=>["TRANSCENDANCE"], "PLANES 2"=>["PLANES+2"]}}
16
+ daily_schedule = {"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}, "6"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"DIM 6", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21H", :film3=>"DE TOUTES NOS FORCES", :film4=>"SOUS LES JUPES DES FILLES"}, "7"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"LUN 7", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"DE TOUTES NOS FORCES"}, "8"=>{:horaire1=>"17h30", :film1=>"BARBECUE", :date=>"MAR 8", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21H", :film3=>"BABYSITTING", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "9"=>{:horaire1=>"17h30", :film1=>"LA LISTE DE MES ENVIES", :date=>"MER 9", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"MALEFIQUE", :film4=>"BARBECUE"}, "10"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"JEU 10", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "11"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"VEN 11", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"DEUX JOURS UNE NUIT"}, "12"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"SAM 12", :film2=>"BABYSITTING", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "13"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"DIM 13 ", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>nil, :film3=>nil, :film4=>nil}, "14"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"LUN 14", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"LA LISTE DE MES ENVIES", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "15"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MAR 15", :film2=>"LA RITOURNELLE", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "16"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"MER 16", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"SOUS LES JUPES DES FILLES"}, "17"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"JEU 17", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "18"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"VEN 18", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "19"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"SAM 19", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "20"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"DIM 20", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "21"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"LUN 21", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "22"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"MAR 22", :film2=>"RIO 2", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"TRANSCENDANCE"}, "23"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"MER 23", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"LA RITOURNELLE"}, "24"=>{:horaire1=>"17h30", :film1=>"DE TOUTES NOS FORCES", :date=>"JEU 24", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "25"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"VEN 25", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "26"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"SAM 26", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "27"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"DIM 27", :film2=>"PLANES 2", :horaire2=>"21 H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "28"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"LUN 28", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "29"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"MAR 29", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "30"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MER 30", :film2=>"DE TOUTES NOS FORCES", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "31"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"JEU 31", :film2=>"DRAGONS 2"}}
17
+ result = {"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"], "DEUX JOURS UNE NUIT"=>["DEUX+JOURS+UNE+NUIT"], "DE TOUTES NOS FORCES"=>["DE+TOUTES+NOS+FORCES"], "QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"=>["QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F"], "RIO 2"=>["RIO+2"], "BARBECUE"=>["BARBECUE"], "LA LISTE DE MES ENVIES"=>["LA+LISTE+DE+MES+ENVIES"], "DRAGONS 2"=>["DRAGONS+2"], "MALEFIQUE"=>["MALEFIQUE"], "ON A FAILLI \u00CATRE AMIES"=>["ON+A+FAILLI+%C3%8ATRE+AMIES"], "LA RITOURNELLE"=>["LA+RITOURNELLE"], "LES VACANCES DU PETIT NICOLAS"=>["LES+VACANCES+DU+PETIT+NICOLAS"], "TRANSFORMERS L AGE DE L'EXTINCTION"=>["TRANSFORMERS+L+AGE+DE+L%27EXTINCTION"], "TRANSCENDANCE"=>["TRANSCENDANCE"], "PLANES 2"=>["PLANES+2"]}
18
+
19
+ @result = ScheduleParser.parse_ods(@ods_path)
20
+ puts @result
21
+ assert_equal daily_schedule , @result[:daily_schedule]
22
+ assert_equal result, @result[:result]
23
+ assert_equal result_expected , @result
24
+ assert_equal 'JUILLET' , @result[:mois]
25
+ assert_equal 'LES RHODOS VILLAGE' , @result[:cinema1]
26
+ assert_equal 'LE CHARMIEUX CHINAILLON' , @result[:cinema2]
27
+ assert_equal 'SAM 5' , @result[:daily_schedule]["5"][:date]
28
+ assert_equal '17h30' , @result[:daily_schedule]["5"][:horaire1]
29
+ assert_equal '21H' , @result[:daily_schedule]["5"][:horaire2]
30
+ assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film1]
31
+ assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film2]
32
+ assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film3]
33
+ assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film4]
34
+ assert_equal 'SOUS+LES+JUPES+DES+FILLES' , @result[:result][@result[:daily_schedule]["5"][:film3]][0]
35
+ assert_equal 'QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F' , @result[:result][@result[:daily_schedule]["7"][:film3]][0]
36
+ end
37
+
38
+ should 'parse ods file with day information ' do
39
+ result_expected = {:mois=>"JUILLET", :cinema1=>"LES RHODOS VILLAGE", :cinema2=>"LE CHARMIEUX CHINAILLON", :daily_schedule=>{"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}}, :result=>{"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"]}}
40
+
41
+ @result = ScheduleParser.parse_ods_with_day(@ods_path, '5')
42
+ puts @result
43
+ assert_equal result_expected , @result
44
+ assert_equal 'JUILLET' , @result[:mois]
45
+ assert_equal 'LES RHODOS VILLAGE' , @result[:cinema1]
46
+ assert_equal 'LE CHARMIEUX CHINAILLON' , @result[:cinema2]
47
+ assert_equal 'SAM 5' , @result[:daily_schedule]["5"][:date]
48
+ assert_equal '17h30' , @result[:daily_schedule]["5"][:horaire1]
49
+ assert_equal '21H' , @result[:daily_schedule]["5"][:horaire2]
50
+ assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film1]
51
+ assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film2]
52
+ assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film3]
53
+ assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film4]
54
+ assert_equal 'SOUS+LES+JUPES+DES+FILLES' , @result[:result][@result[:daily_schedule]["5"][:film3]][0]
55
+ end
56
+ end