rss 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +16 -0
  3. data/Rakefile +8 -1
  4. data/lib/rss/itunes.rb +49 -1
  5. data/lib/rss/maker/itunes.rb +13 -0
  6. data/lib/rss/parser.rb +1 -1
  7. data/lib/rss/version.rb +1 -1
  8. data/rss.gemspec +6 -56
  9. data/test/dot.png +0 -0
  10. data/test/rss-assertions.rb +2116 -0
  11. data/test/rss-testcase.rb +479 -0
  12. data/test/run-test.rb +15 -0
  13. data/test/test_1.0.rb +308 -0
  14. data/test/test_2.0.rb +412 -0
  15. data/test/test_accessor.rb +104 -0
  16. data/test/test_atom.rb +684 -0
  17. data/test/test_content.rb +105 -0
  18. data/test/test_dublincore.rb +270 -0
  19. data/test/test_image.rb +215 -0
  20. data/test/test_inherit.rb +41 -0
  21. data/test/test_itunes.rb +360 -0
  22. data/test/test_maker_0.9.rb +477 -0
  23. data/test/test_maker_1.0.rb +519 -0
  24. data/test/test_maker_2.0.rb +758 -0
  25. data/test/test_maker_atom_entry.rb +394 -0
  26. data/test/test_maker_atom_feed.rb +455 -0
  27. data/test/test_maker_content.rb +48 -0
  28. data/test/test_maker_dc.rb +150 -0
  29. data/test/test_maker_image.rb +63 -0
  30. data/test/test_maker_itunes.rb +488 -0
  31. data/test/test_maker_slash.rb +38 -0
  32. data/test/test_maker_sy.rb +45 -0
  33. data/test/test_maker_taxo.rb +82 -0
  34. data/test/test_maker_trackback.rb +42 -0
  35. data/test/test_maker_xml-stylesheet.rb +84 -0
  36. data/test/test_parser.rb +122 -0
  37. data/test/test_parser_1.0.rb +529 -0
  38. data/test/test_parser_2.0.rb +123 -0
  39. data/test/test_parser_atom_entry.rb +164 -0
  40. data/test/test_parser_atom_feed.rb +277 -0
  41. data/test/test_setup_maker_0.9.rb +247 -0
  42. data/test/test_setup_maker_1.0.rb +551 -0
  43. data/test/test_setup_maker_2.0.rb +309 -0
  44. data/test/test_setup_maker_atom_entry.rb +410 -0
  45. data/test/test_setup_maker_atom_feed.rb +446 -0
  46. data/test/test_setup_maker_itunes.rb +146 -0
  47. data/test/test_setup_maker_slash.rb +39 -0
  48. data/test/test_slash.rb +65 -0
  49. data/test/test_syndication.rb +126 -0
  50. data/test/test_taxonomy.rb +173 -0
  51. data/test/test_to_s.rb +701 -0
  52. data/test/test_trackback.rb +136 -0
  53. data/test/test_xml-stylesheet.rb +109 -0
  54. metadata +109 -7
  55. data/.gitignore +0 -9
  56. data/.travis.yml +0 -26
@@ -0,0 +1,519 @@
1
+ # frozen_string_literal: false
2
+ require_relative "rss-testcase"
3
+
4
+ require "rss/maker"
5
+
6
+ module RSS
7
+ class TestMaker10 < TestCase
8
+ def test_supported?
9
+ assert(RSS::Maker.supported?("1.0"))
10
+ assert(RSS::Maker.supported?("rss1.0"))
11
+ assert(!RSS::Maker.supported?("1.1"))
12
+ assert(!RSS::Maker.supported?("rss1.1"))
13
+ end
14
+
15
+ def test_find_class
16
+ assert_equal(RSS::Maker::RSS10, RSS::Maker["1.0"])
17
+ assert_equal(RSS::Maker::RSS10, RSS::Maker["rss1.0"])
18
+ end
19
+
20
+ def test_rdf
21
+ assert_raise(LocalJumpError) do
22
+ RSS::Maker.make("1.0")
23
+ end
24
+
25
+ rss = RSS::Maker.make("1.0") do |maker|
26
+ setup_dummy_channel(maker)
27
+ setup_dummy_item(maker)
28
+ end
29
+ assert_equal("1.0", rss.rss_version)
30
+
31
+ rss = RSS::Maker.make("1.0") do |maker|
32
+ setup_dummy_channel(maker)
33
+ maker.encoding = "EUC-JP"
34
+
35
+ setup_dummy_item(maker)
36
+ end
37
+ assert_equal("1.0", rss.rss_version)
38
+ assert_equal("EUC-JP", rss.encoding)
39
+
40
+ rss = RSS::Maker.make("1.0") do |maker|
41
+ setup_dummy_channel(maker)
42
+ maker.standalone = "yes"
43
+
44
+ setup_dummy_item(maker)
45
+ end
46
+ assert_equal("1.0", rss.rss_version)
47
+ assert_equal("yes", rss.standalone)
48
+
49
+ rss = RSS::Maker.make("1.0") do |maker|
50
+ setup_dummy_channel(maker)
51
+ maker.encoding = "EUC-JP"
52
+ maker.standalone = "yes"
53
+
54
+ setup_dummy_item(maker)
55
+ end
56
+ assert_equal("1.0", rss.rss_version)
57
+ assert_equal("EUC-JP", rss.encoding)
58
+ assert_equal("yes", rss.standalone)
59
+ end
60
+
61
+ def test_channel
62
+ about = "http://hoge.com"
63
+ title = "fugafuga"
64
+ link = "http://hoge.com"
65
+ description = "fugafugafugafuga"
66
+
67
+ rss = RSS::Maker.make("1.0") do |maker|
68
+ maker.channel.about = about
69
+ maker.channel.title = title
70
+ maker.channel.link = link
71
+ maker.channel.description = description
72
+
73
+ setup_dummy_item(maker)
74
+ end
75
+ channel = rss.channel
76
+ assert_equal(about, channel.about)
77
+ assert_equal(title, channel.title)
78
+ assert_equal(link, channel.link)
79
+ assert_equal(description, channel.description)
80
+ assert_equal(1, channel.items.Seq.lis.size)
81
+ assert_nil(channel.image)
82
+ assert_nil(channel.textinput)
83
+
84
+ rss = RSS::Maker.make("1.0") do |maker|
85
+ maker.channel.about = about
86
+ maker.channel.title = title
87
+ maker.channel.link = link
88
+ maker.channel.description = description
89
+
90
+ setup_dummy_image(maker)
91
+
92
+ setup_dummy_textinput(maker)
93
+
94
+ setup_dummy_item(maker)
95
+ end
96
+ channel = rss.channel
97
+ assert_equal(about, channel.about)
98
+ assert_equal(title, channel.title)
99
+ assert_equal(link, channel.link)
100
+ assert_equal(description, channel.description)
101
+ assert_equal(1, channel.items.Seq.lis.size)
102
+ assert_equal(rss.image.about, channel.image.resource)
103
+ assert_equal(rss.textinput.about, channel.textinput.resource)
104
+ end
105
+
106
+ def test_channel_language
107
+ about = "http://hoge.com"
108
+ title = "fugafuga"
109
+ link = "http://hoge.com"
110
+ description = "fugafugafugafuga"
111
+ language = "ja"
112
+
113
+ rss = RSS::Maker.make("1.0") do |maker|
114
+ maker.channel.about = about
115
+ maker.channel.title = title
116
+ maker.channel.link = link
117
+ maker.channel.description = description
118
+ maker.channel.language = language
119
+
120
+ setup_dummy_item(maker)
121
+ end
122
+ channel = rss.channel
123
+ assert_equal(language, channel.dc_language)
124
+ end
125
+
126
+ def test_not_valid_channel
127
+ about = "http://hoge.com"
128
+ title = "fugafuga"
129
+ link = "http://hoge.com"
130
+ description = "fugafugafugafuga"
131
+
132
+ assert_not_set_error("maker.channel", %w(about)) do
133
+ RSS::Maker.make("1.0") do |maker|
134
+ # maker.channel.about = about
135
+ maker.channel.title = title
136
+ maker.channel.link = link
137
+ maker.channel.description = description
138
+ end
139
+ end
140
+
141
+ assert_not_set_error("maker.channel", %w(title)) do
142
+ RSS::Maker.make("1.0") do |maker|
143
+ maker.channel.about = about
144
+ # maker.channel.title = title
145
+ maker.channel.link = link
146
+ maker.channel.description = description
147
+ end
148
+ end
149
+
150
+ assert_not_set_error("maker.channel", %w(link)) do
151
+ RSS::Maker.make("1.0") do |maker|
152
+ maker.channel.about = about
153
+ maker.channel.title = title
154
+ # maker.channel.link = link
155
+ maker.channel.description = description
156
+ end
157
+ end
158
+
159
+ assert_not_set_error("maker.channel", %w(description)) do
160
+ RSS::Maker.make("1.0") do |maker|
161
+ maker.channel.about = about
162
+ maker.channel.title = title
163
+ maker.channel.link = link
164
+ # maker.channel.description = description
165
+ end
166
+ end
167
+ end
168
+
169
+
170
+ def test_image
171
+ title = "fugafuga"
172
+ link = "http://hoge.com"
173
+ url = "http://hoge.com/hoge.png"
174
+
175
+ rss = RSS::Maker.make("1.0") do |maker|
176
+ setup_dummy_channel(maker)
177
+ maker.channel.link = link
178
+
179
+ maker.image.title = title
180
+ maker.image.url = url
181
+
182
+ setup_dummy_item(maker)
183
+ end
184
+ image = rss.image
185
+ assert_equal(url, image.about)
186
+ assert_equal(url, rss.channel.image.resource)
187
+ assert_equal(title, image.title)
188
+ assert_equal(link, image.link)
189
+ assert_equal(url, image.url)
190
+
191
+ assert_not_set_error("maker.channel", %w(about title description)) do
192
+ RSS::Maker.make("1.0") do |maker|
193
+ # setup_dummy_channel(maker)
194
+ maker.channel.link = link
195
+
196
+ maker.image.title = title
197
+ maker.image.url = url
198
+ end
199
+ end
200
+ end
201
+
202
+ def test_not_valid_image
203
+ title = "fugafuga"
204
+ link = "http://hoge.com"
205
+ url = "http://hoge.com/hoge.png"
206
+
207
+ rss = RSS::Maker.make("1.0") do |maker|
208
+ setup_dummy_channel(maker)
209
+ maker.channel.link = link
210
+
211
+ # maker.image.url = url
212
+ maker.image.title = title
213
+
214
+ setup_dummy_item(maker)
215
+ end
216
+ assert_nil(rss.channel.image)
217
+ assert_nil(rss.image)
218
+
219
+ rss = RSS::Maker.make("1.0") do |maker|
220
+ setup_dummy_channel(maker)
221
+ maker.channel.link = link
222
+
223
+ maker.image.url = url
224
+ # maker.image.title = title
225
+
226
+ setup_dummy_item(maker)
227
+ end
228
+ assert_nil(rss.channel.image)
229
+ assert_nil(rss.image)
230
+
231
+ assert_not_set_error("maker.channel", %w(link)) do
232
+ RSS::Maker.make("1.0") do |maker|
233
+ setup_dummy_channel(maker)
234
+ # maker.channel.link = link
235
+ maker.channel.link = nil
236
+
237
+ maker.image.url = url
238
+ maker.image.title = title
239
+
240
+ setup_dummy_item(maker)
241
+ end
242
+ end
243
+ end
244
+
245
+ def test_items(with_convenience_way=true)
246
+ title = "TITLE"
247
+ link = "http://hoge.com/"
248
+ description = "text hoge fuga"
249
+
250
+ assert_not_set_error("maker", %w(items)) do
251
+ RSS::Maker.make("1.0") do |maker|
252
+ setup_dummy_channel(maker)
253
+ end
254
+ end
255
+
256
+ rss = RSS::Maker.make("1.0") do |maker|
257
+ setup_dummy_channel(maker)
258
+
259
+ maker.items.new_item do |item|
260
+ item.title = title
261
+ item.link = link
262
+ # item.description = description
263
+ end
264
+ end
265
+ assert_equal(1, rss.items.size)
266
+ item = rss.items.first
267
+ assert_equal(link, item.about)
268
+ assert_equal(title, item.title)
269
+ assert_equal(link, item.link)
270
+ assert_nil(item.description)
271
+
272
+ pubDate = Time.now
273
+
274
+ item_size = 5
275
+ rss = RSS::Maker.make("1.0") do |maker|
276
+ setup_dummy_channel(maker)
277
+
278
+ item_size.times do |i|
279
+ maker.items.new_item do |_item|
280
+ _item.title = "#{title}#{i}"
281
+ _item.link = "#{link}#{i}"
282
+ _item.description = "#{description}#{i}"
283
+ _item.date = pubDate - i
284
+ end
285
+ end
286
+ maker.items.do_sort = true
287
+ end
288
+ assert_equal(item_size, rss.items.size)
289
+ rss.items.each_with_index do |_item, i|
290
+ assert_equal("#{link}#{i}", _item.about)
291
+ assert_equal("#{title}#{i}", _item.title)
292
+ assert_equal("#{link}#{i}", _item.link)
293
+ assert_equal("#{description}#{i}", _item.description)
294
+ end
295
+
296
+ rss = RSS::Maker.make("1.0") do |maker|
297
+ setup_dummy_channel(maker)
298
+
299
+ item_size.times do |i|
300
+ maker.items.new_item do |_item|
301
+ _item.title = "#{title}#{i}"
302
+ _item.link = "#{link}#{i}"
303
+ _item.description = "#{description}#{i}"
304
+ end
305
+ end
306
+ maker.items.do_sort = Proc.new do |x, y|
307
+ if with_convenience_way
308
+ y.title[-1] <=> x.title[-1]
309
+ else
310
+ y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]}
311
+ end
312
+ end
313
+ end
314
+ assert_equal(item_size, rss.items.size)
315
+ rss.items.reverse.each_with_index do |_item, i|
316
+ assert_equal("#{link}#{i}", _item.about)
317
+ assert_equal("#{title}#{i}", _item.title)
318
+ assert_equal("#{link}#{i}", _item.link)
319
+ assert_equal("#{description}#{i}", _item.description)
320
+ end
321
+
322
+ max_size = item_size / 2
323
+ rss = RSS::Maker.make("1.0") do |maker|
324
+ setup_dummy_channel(maker)
325
+
326
+ item_size.times do |i|
327
+ maker.items.new_item do |_item|
328
+ _item.title = "#{title}#{i}"
329
+ _item.link = "#{link}#{i}"
330
+ _item.description = "#{description}#{i}"
331
+ end
332
+ end
333
+ maker.items.max_size = max_size
334
+ end
335
+ assert_equal(max_size, rss.items.size)
336
+ rss.items.each_with_index do |_item, i|
337
+ assert_equal("#{link}#{i}", _item.about)
338
+ assert_equal("#{title}#{i}", _item.title)
339
+ assert_equal("#{link}#{i}", _item.link)
340
+ assert_equal("#{description}#{i}", _item.description)
341
+ end
342
+
343
+ max_size = 0
344
+ assert_not_set_error("maker", %w(items)) do
345
+ RSS::Maker.make("1.0") do |maker|
346
+ setup_dummy_channel(maker)
347
+
348
+ item_size.times do |i|
349
+ maker.items.new_item do |_item|
350
+ _item.title = "#{title}#{i}"
351
+ _item.link = "#{link}#{i}"
352
+ _item.description = "#{description}#{i}"
353
+ end
354
+ end
355
+ maker.items.max_size = max_size
356
+ end
357
+ end
358
+
359
+ max_size = -2
360
+ rss = RSS::Maker.make("1.0") do |maker|
361
+ setup_dummy_channel(maker)
362
+
363
+ item_size.times do |i|
364
+ maker.items.new_item do |_item|
365
+ _item.title = "#{title}#{i}"
366
+ _item.link = "#{link}#{i}"
367
+ _item.description = "#{description}#{i}"
368
+ end
369
+ end
370
+ maker.items.max_size = max_size
371
+ end
372
+ assert_equal(item_size + max_size + 1, rss.items.size)
373
+ rss.items.each_with_index do |_item, i|
374
+ assert_equal("#{link}#{i}", _item.about)
375
+ assert_equal("#{title}#{i}", _item.title)
376
+ assert_equal("#{link}#{i}", _item.link)
377
+ assert_equal("#{description}#{i}", _item.description)
378
+ end
379
+ end
380
+
381
+ def test_items_with_new_api_since_018
382
+ test_items(false)
383
+ end
384
+
385
+ def test_not_valid_items
386
+ title = "TITLE"
387
+ link = "http://hoge.com/"
388
+
389
+ assert_not_set_error("maker.item", %w(title)) do
390
+ RSS::Maker.make("1.0") do |maker|
391
+ setup_dummy_channel(maker)
392
+
393
+ maker.items.new_item do |item|
394
+ # item.title = title
395
+ item.link = link
396
+ end
397
+ end
398
+ end
399
+
400
+ assert_not_set_error("maker.item", %w(link)) do
401
+ RSS::Maker.make("1.0") do |maker|
402
+ setup_dummy_channel(maker)
403
+
404
+ maker.items.new_item do |item|
405
+ item.title = title
406
+ # item.link = link
407
+ end
408
+ end
409
+ end
410
+
411
+ assert_not_set_error("maker.item", %w(title link)) do
412
+ RSS::Maker.make("1.0") do |maker|
413
+ setup_dummy_channel(maker)
414
+
415
+ maker.items.new_item do |item|
416
+ # item.title = title
417
+ # item.link = link
418
+ end
419
+ end
420
+ end
421
+ end
422
+
423
+ def test_textinput
424
+ title = "fugafuga"
425
+ description = "text hoge fuga"
426
+ name = "hoge"
427
+ link = "http://hoge.com"
428
+
429
+ rss = RSS::Maker.make("1.0") do |maker|
430
+ setup_dummy_channel(maker)
431
+
432
+ maker.textinput.link = link
433
+ maker.textinput.title = title
434
+ maker.textinput.description = description
435
+ maker.textinput.name = name
436
+
437
+ setup_dummy_item(maker)
438
+ end
439
+ textinput = rss.textinput
440
+ assert_equal(link, textinput.about)
441
+ assert_equal(link, rss.channel.textinput.resource)
442
+ assert_equal(title, textinput.title)
443
+ assert_equal(name, textinput.name)
444
+ assert_equal(description, textinput.description)
445
+ assert_equal(link, textinput.link)
446
+
447
+ assert_not_set_error("maker.channel", %w(about link description title)) do
448
+ RSS::Maker.make("1.0") do |maker|
449
+ # setup_dummy_channel(maker)
450
+
451
+ maker.textinput.link = link
452
+ maker.textinput.title = title
453
+ maker.textinput.description = description
454
+ maker.textinput.name = name
455
+ end
456
+ end
457
+ end
458
+
459
+ def test_not_valid_textinput
460
+ title = "fugafuga"
461
+ description = "text hoge fuga"
462
+ name = "hoge"
463
+ link = "http://hoge.com"
464
+
465
+ rss = RSS::Maker.make("1.0") do |maker|
466
+ setup_dummy_channel(maker)
467
+
468
+ # maker.textinput.link = link
469
+ maker.textinput.title = title
470
+ maker.textinput.description = description
471
+ maker.textinput.name = name
472
+
473
+ setup_dummy_item(maker)
474
+ end
475
+ assert_nil(rss.channel.textinput)
476
+ assert_nil(rss.textinput)
477
+
478
+ rss = RSS::Maker.make("1.0") do |maker|
479
+ setup_dummy_channel(maker)
480
+
481
+ maker.textinput.link = link
482
+ # maker.textinput.title = title
483
+ maker.textinput.description = description
484
+ maker.textinput.name = name
485
+
486
+ setup_dummy_item(maker)
487
+ end
488
+ assert_nil(rss.channel.textinput)
489
+ assert_nil(rss.textinput)
490
+
491
+ rss = RSS::Maker.make("1.0") do |maker|
492
+ setup_dummy_channel(maker)
493
+
494
+ maker.textinput.link = link
495
+ maker.textinput.title = title
496
+ # maker.textinput.description = description
497
+ maker.textinput.name = name
498
+
499
+ setup_dummy_item(maker)
500
+ end
501
+ assert_nil(rss.channel.textinput)
502
+ assert_nil(rss.textinput)
503
+
504
+ rss = RSS::Maker.make("1.0") do |maker|
505
+ setup_dummy_channel(maker)
506
+
507
+ maker.textinput.link = link
508
+ maker.textinput.title = title
509
+ maker.textinput.description = description
510
+ # maker.textinput.name = name
511
+
512
+ setup_dummy_item(maker)
513
+ end
514
+ assert_nil(rss.channel.textinput)
515
+ assert_nil(rss.textinput)
516
+ end
517
+
518
+ end
519
+ end