rss-nokogiri 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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