movies_client 0.0.11 → 0.0.12

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