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