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,757 @@
1
+ require "rss-testcase"
2
+
3
+ require "rss/maker"
4
+
5
+ module RSS
6
+ class TestMaker20 < TestCase
7
+ def test_supported?
8
+ assert(RSS::Maker.supported?("2.0"))
9
+ assert(RSS::Maker.supported?("rss2.0"))
10
+ assert(!RSS::Maker.supported?("2.2"))
11
+ assert(!RSS::Maker.supported?("rss2.2"))
12
+ end
13
+
14
+ def test_find_class
15
+ assert_equal(RSS::Maker::RSS20, RSS::Maker["2.0"])
16
+ assert_equal(RSS::Maker::RSS20, RSS::Maker["rss2.0"])
17
+ end
18
+
19
+ def test_rss
20
+ assert_raise(LocalJumpError) do
21
+ RSS::Maker.make("2.0")
22
+ end
23
+
24
+ rss = RSS::Maker.make("2.0") do |maker|
25
+ setup_dummy_channel(maker)
26
+ end
27
+ assert_equal("2.0", rss.rss_version)
28
+
29
+ rss = RSS::Maker.make("2.0") do |maker|
30
+ setup_dummy_channel(maker)
31
+
32
+ maker.encoding = "EUC-JP"
33
+ end
34
+ assert_equal("2.0", rss.rss_version)
35
+ assert_equal("EUC-JP", rss.encoding)
36
+
37
+ rss = RSS::Maker.make("2.0") do |maker|
38
+ setup_dummy_channel(maker)
39
+
40
+ maker.standalone = "yes"
41
+ end
42
+ assert_equal("2.0", rss.rss_version)
43
+ assert_equal("yes", rss.standalone)
44
+
45
+ rss = RSS::Maker.make("2.0") do |maker|
46
+ setup_dummy_channel(maker)
47
+
48
+ maker.encoding = "EUC-JP"
49
+ maker.standalone = "yes"
50
+ end
51
+ assert_equal("2.0", rss.rss_version)
52
+ assert_equal("EUC-JP", rss.encoding)
53
+ assert_equal("yes", rss.standalone)
54
+ end
55
+
56
+ def test_channel
57
+ title = "fugafuga"
58
+ link = "http://hoge.com"
59
+ description = "fugafugafugafuga"
60
+ language = "ja"
61
+ copyright = "foo"
62
+ managingEditor = "bar"
63
+ webMaster = "web master"
64
+ rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
65
+ docs = "http://foo.com/doc"
66
+ skipDays = [
67
+ "Sunday",
68
+ "Monday",
69
+ ]
70
+ skipHours = [
71
+ "0",
72
+ "13",
73
+ ]
74
+ pubDate = Time.now
75
+ lastBuildDate = Time.now
76
+ categories = [
77
+ "Nespapers",
78
+ "misc",
79
+ ]
80
+ generator = "RSS Maker"
81
+ ttl = "60"
82
+
83
+ rss = RSS::Maker.make("2.0") do |maker|
84
+ maker.channel.title = title
85
+ maker.channel.link = link
86
+ maker.channel.description = description
87
+ maker.channel.language = language
88
+ maker.channel.copyright = copyright
89
+ maker.channel.managingEditor = managingEditor
90
+ maker.channel.webMaster = webMaster
91
+ maker.channel.rating = rating
92
+ maker.channel.docs = docs
93
+ maker.channel.pubDate = pubDate
94
+ maker.channel.lastBuildDate = lastBuildDate
95
+
96
+ skipDays.each do |day|
97
+ maker.channel.skipDays.new_day do |new_day|
98
+ new_day.content = day
99
+ end
100
+ end
101
+ skipHours.each do |hour|
102
+ maker.channel.skipHours.new_hour do |new_hour|
103
+ new_hour.content = hour
104
+ end
105
+ end
106
+
107
+ categories.each do |category|
108
+ maker.channel.categories.new_category do |new_category|
109
+ new_category.content = category
110
+ end
111
+ end
112
+
113
+ maker.channel.generator = generator
114
+ maker.channel.ttl = ttl
115
+ end
116
+ channel = rss.channel
117
+
118
+ assert_equal(title, channel.title)
119
+ assert_equal(link, channel.link)
120
+ assert_equal(description, channel.description)
121
+ assert_equal(language, channel.language)
122
+ assert_equal(copyright, channel.copyright)
123
+ assert_equal(managingEditor, channel.managingEditor)
124
+ assert_equal(webMaster, channel.webMaster)
125
+ assert_equal(rating, channel.rating)
126
+ assert_equal(docs, channel.docs)
127
+ assert_equal(pubDate, channel.pubDate)
128
+ assert_equal(pubDate, channel.date)
129
+ assert_equal(lastBuildDate, channel.lastBuildDate)
130
+
131
+ skipDays.each_with_index do |day, i|
132
+ assert_equal(day, channel.skipDays.days[i].content)
133
+ end
134
+ skipHours.each_with_index do |hour, i|
135
+ assert_equal(hour.to_i, channel.skipHours.hours[i].content)
136
+ end
137
+
138
+ channel.categories.each_with_index do |category, i|
139
+ assert_equal(categories[i], category.content)
140
+ end
141
+
142
+ assert_equal(generator, channel.generator)
143
+ assert_equal(ttl.to_i, channel.ttl)
144
+
145
+ assert(channel.items.empty?)
146
+ assert_nil(channel.image)
147
+ assert_nil(channel.textInput)
148
+ end
149
+
150
+ def test_not_valid_channel
151
+ title = "fugafuga"
152
+ link = "http://hoge.com"
153
+ description = "fugafugafugafuga"
154
+ language = "ja"
155
+
156
+ assert_not_set_error("maker.channel", %w(title)) do
157
+ RSS::Maker.make("2.0") do |maker|
158
+ # maker.channel.title = title
159
+ maker.channel.link = link
160
+ maker.channel.description = description
161
+ maker.channel.language = language
162
+ end
163
+ end
164
+
165
+ assert_not_set_error("maker.channel", %w(link)) do
166
+ RSS::Maker.make("2.0") do |maker|
167
+ maker.channel.title = title
168
+ # maker.channel.link = link
169
+ maker.channel.description = description
170
+ maker.channel.language = language
171
+ end
172
+ end
173
+
174
+ assert_not_set_error("maker.channel", %w(description)) do
175
+ RSS::Maker.make("2.0") do |maker|
176
+ maker.channel.title = title
177
+ maker.channel.link = link
178
+ # maker.channel.description = description
179
+ maker.channel.language = language
180
+ end
181
+ end
182
+
183
+ rss = RSS::Maker.make("2.0") do |maker|
184
+ maker.channel.title = title
185
+ maker.channel.link = link
186
+ maker.channel.description = description
187
+ # maker.channel.language = language
188
+ end
189
+ assert_not_nil(rss)
190
+ end
191
+
192
+
193
+ def test_cloud
194
+ domain = "rpc.sys.com"
195
+ port = "80"
196
+ path = "/RPC2"
197
+ registerProcedure = "myCloud.rssPleaseNotify"
198
+ protocol = "xml-rpc"
199
+
200
+ rss = RSS::Maker.make("2.0") do |maker|
201
+ setup_dummy_channel(maker)
202
+
203
+ maker.channel.cloud.domain = domain
204
+ maker.channel.cloud.port = port
205
+ maker.channel.cloud.path = path
206
+ maker.channel.cloud.registerProcedure = registerProcedure
207
+ maker.channel.cloud.protocol = protocol
208
+ end
209
+ cloud = rss.channel.cloud
210
+ assert_equal(domain, cloud.domain)
211
+ assert_equal(port.to_i, cloud.port)
212
+ assert_equal(path, cloud.path)
213
+ assert_equal(registerProcedure, cloud.registerProcedure)
214
+ assert_equal(protocol, cloud.protocol)
215
+ end
216
+
217
+ def test_not_valid_cloud
218
+ domain = "rpc.sys.com"
219
+ port = "80"
220
+ path = "/RPC2"
221
+ registerProcedure = "myCloud.rssPleaseNotify"
222
+ protocol = "xml-rpc"
223
+
224
+ rss = RSS::Maker.make("2.0") do |maker|
225
+ setup_dummy_channel(maker)
226
+
227
+ # maker.channel.cloud.domain = domain
228
+ maker.channel.cloud.port = port
229
+ maker.channel.cloud.path = path
230
+ maker.channel.cloud.registerProcedure = registerProcedure
231
+ maker.channel.cloud.protocol = protocol
232
+ end
233
+ assert_nil(rss.channel.cloud)
234
+
235
+ rss = RSS::Maker.make("2.0") do |maker|
236
+ setup_dummy_channel(maker)
237
+
238
+ maker.channel.cloud.domain = domain
239
+ # maker.channel.cloud.port = port
240
+ maker.channel.cloud.path = path
241
+ maker.channel.cloud.registerProcedure = registerProcedure
242
+ maker.channel.cloud.protocol = protocol
243
+ end
244
+ assert_nil(rss.channel.cloud)
245
+
246
+ rss = RSS::Maker.make("2.0") do |maker|
247
+ setup_dummy_channel(maker)
248
+
249
+ maker.channel.cloud.domain = domain
250
+ maker.channel.cloud.port = port
251
+ # maker.channel.cloud.path = path
252
+ maker.channel.cloud.registerProcedure = registerProcedure
253
+ maker.channel.cloud.protocol = protocol
254
+ end
255
+ assert_nil(rss.channel.cloud)
256
+
257
+ rss = RSS::Maker.make("2.0") do |maker|
258
+ setup_dummy_channel(maker)
259
+
260
+ maker.channel.cloud.domain = domain
261
+ maker.channel.cloud.port = port
262
+ maker.channel.cloud.path = path
263
+ # maker.channel.cloud.registerProcedure = registerProcedure
264
+ maker.channel.cloud.protocol = protocol
265
+ end
266
+ assert_nil(rss.channel.cloud)
267
+
268
+ rss = RSS::Maker.make("2.0") do |maker|
269
+ setup_dummy_channel(maker)
270
+
271
+ maker.channel.cloud.domain = domain
272
+ maker.channel.cloud.port = port
273
+ maker.channel.cloud.path = path
274
+ maker.channel.cloud.registerProcedure = registerProcedure
275
+ # maker.channel.cloud.protocol = protocol
276
+ end
277
+ assert_nil(rss.channel.cloud)
278
+ end
279
+
280
+
281
+ def test_image
282
+ title = "fugafuga"
283
+ link = "http://hoge.com"
284
+ url = "http://hoge.com/hoge.png"
285
+ width = "144"
286
+ height = "400"
287
+ description = "an image"
288
+
289
+ rss = RSS::Maker.make("2.0") do |maker|
290
+ setup_dummy_channel(maker)
291
+ maker.channel.link = link
292
+
293
+ maker.image.title = title
294
+ maker.image.url = url
295
+ maker.image.width = width
296
+ maker.image.height = height
297
+ maker.image.description = description
298
+ end
299
+ image = rss.image
300
+ assert_equal(title, image.title)
301
+ assert_equal(link, image.link)
302
+ assert_equal(url, image.url)
303
+ assert_equal(width.to_i, image.width)
304
+ assert_equal(height.to_i, image.height)
305
+ assert_equal(description, image.description)
306
+
307
+ assert_not_set_error("maker.channel", %w(title description)) do
308
+ RSS::Maker.make("2.0") do |maker|
309
+ # setup_dummy_channel(maker)
310
+ maker.channel.link = link
311
+
312
+ maker.image.title = title
313
+ maker.image.url = url
314
+ maker.image.width = width
315
+ maker.image.height = height
316
+ maker.image.description = description
317
+ end
318
+ end
319
+ end
320
+
321
+ def test_not_valid_image
322
+ title = "fugafuga"
323
+ link = "http://hoge.com"
324
+ url = "http://hoge.com/hoge.png"
325
+ width = "144"
326
+ height = "400"
327
+ description = "an image"
328
+
329
+ rss = RSS::Maker.make("2.0") do |maker|
330
+ setup_dummy_channel(maker)
331
+ maker.channel.link = link
332
+
333
+ # maker.image.title = title
334
+ maker.image.url = url
335
+ maker.image.width = width
336
+ maker.image.height = height
337
+ maker.image.description = description
338
+ end
339
+ assert_nil(rss.image)
340
+
341
+ assert_not_set_error("maker.channel", %w(link)) do
342
+ RSS::Maker.make("2.0") do |maker|
343
+ setup_dummy_channel(maker)
344
+ # maker.channel.link = link
345
+ maker.channel.link = nil
346
+
347
+ maker.image.title = title
348
+ maker.image.url = url
349
+ maker.image.width = width
350
+ maker.image.height = height
351
+ maker.image.description = description
352
+ end
353
+ end
354
+
355
+ rss = RSS::Maker.make("2.0") do |maker|
356
+ setup_dummy_channel(maker)
357
+ maker.channel.link = link
358
+
359
+ maker.image.title = title
360
+ # maker.image.url = url
361
+ maker.image.width = width
362
+ maker.image.height = height
363
+ maker.image.description = description
364
+ end
365
+ assert_nil(rss.image)
366
+ end
367
+
368
+ def test_items(with_convenience_way=true)
369
+ title = "TITLE"
370
+ link = "http://hoge.com/"
371
+ description = "text hoge fuga"
372
+ author = "oprah@oxygen.net"
373
+ comments = "http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290"
374
+ pubDate = Time.now
375
+
376
+ rss = RSS::Maker.make("2.0") do |maker|
377
+ setup_dummy_channel(maker)
378
+ end
379
+ assert(rss.channel.items.empty?)
380
+
381
+ item_size = 5
382
+ rss = RSS::Maker.make("2.0") do |maker|
383
+ setup_dummy_channel(maker)
384
+
385
+ item_size.times do |i|
386
+ maker.items.new_item do |item|
387
+ item.title = "#{title}#{i}"
388
+ item.link = "#{link}#{i}"
389
+ item.description = "#{description}#{i}"
390
+ item.author = "#{author}#{i}"
391
+ item.comments = "#{comments}#{i}"
392
+ item.date = pubDate
393
+ end
394
+ end
395
+ maker.items.do_sort = true
396
+ end
397
+ assert_equal(item_size, rss.items.size)
398
+ rss.channel.items.each_with_index do |item, i|
399
+ assert_equal("#{title}#{i}", item.title)
400
+ assert_equal("#{link}#{i}", item.link)
401
+ assert_equal("#{description}#{i}", item.description)
402
+ assert_equal("#{author}#{i}", item.author)
403
+ assert_equal("#{comments}#{i}", item.comments)
404
+ assert_equal(pubDate, item.pubDate)
405
+ assert_equal(pubDate, item.date)
406
+ end
407
+
408
+ rss = RSS::Maker.make("2.0") do |maker|
409
+ setup_dummy_channel(maker)
410
+
411
+ item_size.times do |i|
412
+ maker.items.new_item do |item|
413
+ item.title = "#{title}#{i}"
414
+ item.link = "#{link}#{i}"
415
+ item.description = "#{description}#{i}"
416
+ item.author = "#{author}#{i}"
417
+ item.comments = "#{comments}#{i}"
418
+ item.date = pubDate
419
+ end
420
+ end
421
+ maker.items.do_sort = Proc.new do |x, y|
422
+ if with_convenience_way
423
+ y.title[-1] <=> x.title[-1]
424
+ else
425
+ y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]}
426
+ end
427
+ end
428
+ end
429
+ assert_equal(item_size, rss.items.size)
430
+ rss.channel.items.reverse.each_with_index do |item, i|
431
+ assert_equal("#{title}#{i}", item.title)
432
+ assert_equal("#{link}#{i}", item.link)
433
+ assert_equal("#{description}#{i}", item.description)
434
+ assert_equal("#{author}#{i}", item.author)
435
+ assert_equal("#{comments}#{i}", item.comments)
436
+ assert_equal(pubDate, item.pubDate)
437
+ assert_equal(pubDate, item.date)
438
+ end
439
+ end
440
+
441
+ def test_items_with_new_api_since_018
442
+ test_items(false)
443
+ end
444
+
445
+ def test_pubDate_without_description
446
+ title = "TITLE"
447
+ link = "http://hoge.com/"
448
+ description = "text hoge fuga"
449
+ author = "oprah@oxygen.net"
450
+ pubDate = Time.now
451
+
452
+ rss = RSS::Maker.make("2.0") do |maker|
453
+ setup_dummy_channel(maker)
454
+
455
+ maker.items.new_item do |item|
456
+ item.title = title
457
+ item.link = link
458
+ # item.description = description
459
+ item.author = author
460
+ item.pubDate = pubDate
461
+ end
462
+ end
463
+ assert_equal(1, rss.items.size)
464
+ rss.channel.items.each_with_index do |item, i|
465
+ assert_equal(title, item.title)
466
+ assert_equal(link, item.link)
467
+ # assert_equal(description, item.description)
468
+ assert_equal(author, item.author)
469
+ assert_equal(pubDate, item.pubDate)
470
+ assert_equal(pubDate, item.date)
471
+ end
472
+ end
473
+
474
+ def test_guid
475
+ isPermaLink = "true"
476
+ content = "http://inessential.com/2002/09/01.php#a2"
477
+
478
+ rss = RSS::Maker.make("2.0") do |maker|
479
+ setup_dummy_channel(maker)
480
+ setup_dummy_item(maker)
481
+
482
+ guid = maker.items.last.guid
483
+ guid.isPermaLink = isPermaLink
484
+ guid.content = content
485
+ end
486
+ guid = rss.channel.items.last.guid
487
+ assert_equal(isPermaLink == "true", guid.isPermaLink)
488
+ assert_equal(content, guid.content)
489
+ end
490
+
491
+ def test_guid_permanent_link
492
+ content = "http://inessential.com/2002/09/01.php#a2"
493
+
494
+ rss = RSS::Maker.make("2.0") do |maker|
495
+ setup_dummy_channel(maker)
496
+ setup_dummy_item(maker)
497
+
498
+ guid = maker.items.last.guid
499
+ assert_equal(nil, guid.permanent_link?)
500
+ assert_equal(guid.isPermaLink, guid.permanent_link?)
501
+ guid.permanent_link = true
502
+ assert_equal(true, guid.permanent_link?)
503
+ assert_equal(guid.isPermaLink, guid.permanent_link?)
504
+ guid.content = content
505
+ end
506
+ guid = rss.channel.items.last.guid
507
+ assert_equal(true, guid.isPermaLink)
508
+ assert_equal(content, guid.content)
509
+ end
510
+
511
+ def test_guid_permanent_link_false
512
+ content = "http://inessential.com/2002/09/01.php#a2"
513
+
514
+ rss = RSS::Maker.make("2.0") do |maker|
515
+ setup_dummy_channel(maker)
516
+ setup_dummy_item(maker)
517
+
518
+ guid = maker.items.last.guid
519
+ assert_equal(nil, guid.permanent_link?)
520
+ assert_equal(guid.isPermaLink, guid.permanent_link?)
521
+ guid.permanent_link = false
522
+ assert_equal(false, guid.permanent_link?)
523
+ assert_equal(guid.isPermaLink, guid.permanent_link?)
524
+ guid.content = content
525
+ end
526
+ guid = rss.channel.items.last.guid
527
+ assert_equal(false, guid.isPermaLink)
528
+ assert_equal(content, guid.content)
529
+ end
530
+
531
+ def test_not_valid_guid
532
+ content = "http://inessential.com/2002/09/01.php#a2"
533
+
534
+ rss = RSS::Maker.make("2.0") do |maker|
535
+ setup_dummy_channel(maker)
536
+ setup_dummy_item(maker)
537
+
538
+ guid = maker.items.last.guid
539
+ # guid.content = content
540
+ end
541
+ assert_nil(rss.channel.items.last.guid)
542
+ end
543
+
544
+ def test_enclosure
545
+ url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
546
+ length = "12216320"
547
+ type = "audio/mpeg"
548
+
549
+ rss = RSS::Maker.make("2.0") do |maker|
550
+ setup_dummy_channel(maker)
551
+ setup_dummy_item(maker)
552
+
553
+ enclosure = maker.items.last.enclosure
554
+ enclosure.url = url
555
+ enclosure.length = length
556
+ enclosure.type = type
557
+ end
558
+ enclosure = rss.channel.items.last.enclosure
559
+ assert_equal(url, enclosure.url)
560
+ assert_equal(length.to_i, enclosure.length)
561
+ assert_equal(type, enclosure.type)
562
+ end
563
+
564
+ def test_not_valid_enclosure
565
+ url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
566
+ length = "12216320"
567
+ type = "audio/mpeg"
568
+
569
+ rss = RSS::Maker.make("2.0") do |maker|
570
+ setup_dummy_channel(maker)
571
+ setup_dummy_item(maker)
572
+
573
+ enclosure = maker.items.last.enclosure
574
+ # enclosure.url = url
575
+ enclosure.length = length
576
+ enclosure.type = type
577
+ end
578
+ assert_nil(rss.channel.items.last.enclosure)
579
+
580
+ rss = RSS::Maker.make("2.0") do |maker|
581
+ setup_dummy_channel(maker)
582
+ setup_dummy_item(maker)
583
+
584
+ enclosure = maker.items.last.enclosure
585
+ enclosure.url = url
586
+ # enclosure.length = length
587
+ enclosure.type = type
588
+ end
589
+ assert_nil(rss.channel.items.last.enclosure)
590
+
591
+ rss = RSS::Maker.make("2.0") do |maker|
592
+ setup_dummy_channel(maker)
593
+ setup_dummy_item(maker)
594
+
595
+ enclosure = maker.items.last.enclosure
596
+ enclosure.url = url
597
+ enclosure.length = length
598
+ # enclosure.type = type
599
+ end
600
+ assert_nil(rss.channel.items.last.enclosure)
601
+ end
602
+
603
+
604
+ def test_source
605
+ url = "http://static.userland.com/tomalak/links2.xml"
606
+ content = "Tomalak's Realm"
607
+
608
+ rss = RSS::Maker.make("2.0") do |maker|
609
+ setup_dummy_channel(maker)
610
+ setup_dummy_item(maker)
611
+
612
+ source = maker.items.last.source
613
+ source.url = url
614
+ source.content = content
615
+ end
616
+ source = rss.channel.items.last.source
617
+ assert_equal(url, source.url)
618
+ assert_equal(content, source.content)
619
+ end
620
+
621
+ def test_not_valid_source
622
+ url = "http://static.userland.com/tomalak/links2.xml"
623
+ content = "Tomalak's Realm"
624
+
625
+ rss = RSS::Maker.make("2.0") do |maker|
626
+ setup_dummy_channel(maker)
627
+ setup_dummy_item(maker)
628
+
629
+ source = maker.items.last.source
630
+ # source.url = url
631
+ source.content = content
632
+ end
633
+ assert_nil(rss.channel.items.last.source)
634
+
635
+ rss = RSS::Maker.make("2.0") do |maker|
636
+ setup_dummy_channel(maker)
637
+ setup_dummy_item(maker)
638
+
639
+ source = maker.items.last.source
640
+ source.url = url
641
+ # source.content = content
642
+ end
643
+ assert_nil(rss.channel.items.last.source)
644
+ end
645
+
646
+ def test_category
647
+ domain = "http://www.fool.com/cusips"
648
+ content = "MSFT"
649
+
650
+ rss = RSS::Maker.make("2.0") do |maker|
651
+ setup_dummy_channel(maker)
652
+ setup_dummy_item(maker)
653
+
654
+ maker.items.last.categories.new_category do |category|
655
+ category.domain = domain
656
+ category.content = content
657
+ end
658
+ end
659
+ category = rss.channel.items.last.categories.last
660
+ assert_equal(domain, category.domain)
661
+ assert_equal(content, category.content)
662
+ end
663
+
664
+ def test_not_valid_category
665
+ content = "Grateful Dead"
666
+
667
+ rss = RSS::Maker.make("2.0") do |maker|
668
+ setup_dummy_channel(maker)
669
+ setup_dummy_item(maker)
670
+
671
+ maker.items.last.categories.new_category do |category|
672
+ # category.content = content
673
+ end
674
+ end
675
+ assert(rss.channel.items.last.categories.empty?)
676
+ end
677
+
678
+ def test_textInput
679
+ title = "fugafuga"
680
+ description = "text hoge fuga"
681
+ name = "hoge"
682
+ link = "http://hoge.com"
683
+
684
+ rss = RSS::Maker.make("2.0") do |maker|
685
+ setup_dummy_channel(maker)
686
+
687
+ maker.textinput.title = title
688
+ maker.textinput.description = description
689
+ maker.textinput.name = name
690
+ maker.textinput.link = link
691
+ end
692
+ textInput = rss.channel.textInput
693
+ assert_equal(title, textInput.title)
694
+ assert_equal(description, textInput.description)
695
+ assert_equal(name, textInput.name)
696
+ assert_equal(link, textInput.link)
697
+
698
+ assert_not_set_error("maker.channel", %w(link description title)) do
699
+ RSS::Maker.make("2.0") do |maker|
700
+ # setup_dummy_channel(maker)
701
+
702
+ maker.textinput.title = title
703
+ maker.textinput.description = description
704
+ maker.textinput.name = name
705
+ maker.textinput.link = link
706
+ end
707
+ end
708
+ end
709
+
710
+ def test_not_valid_textInput
711
+ title = "fugafuga"
712
+ description = "text hoge fuga"
713
+ name = "hoge"
714
+ link = "http://hoge.com"
715
+
716
+ rss = RSS::Maker.make("2.0") do |maker|
717
+ setup_dummy_channel(maker)
718
+
719
+ # maker.textinput.title = title
720
+ maker.textinput.description = description
721
+ maker.textinput.name = name
722
+ maker.textinput.link = link
723
+ end
724
+ assert_nil(rss.channel.textInput)
725
+
726
+ rss = RSS::Maker.make("2.0") do |maker|
727
+ setup_dummy_channel(maker)
728
+
729
+ maker.textinput.title = title
730
+ # maker.textinput.description = description
731
+ maker.textinput.name = name
732
+ maker.textinput.link = link
733
+ end
734
+ assert_nil(rss.channel.textInput)
735
+
736
+ rss = RSS::Maker.make("2.0") do |maker|
737
+ setup_dummy_channel(maker)
738
+
739
+ maker.textinput.title = title
740
+ maker.textinput.description = description
741
+ # maker.textinput.name = name
742
+ maker.textinput.link = link
743
+ end
744
+ assert_nil(rss.channel.textInput)
745
+
746
+ rss = RSS::Maker.make("2.0") do |maker|
747
+ setup_dummy_channel(maker)
748
+
749
+ maker.textinput.title = title
750
+ maker.textinput.description = description
751
+ maker.textinput.name = name
752
+ # maker.textinput.link = link
753
+ end
754
+ assert_nil(rss.channel.textInput)
755
+ end
756
+ end
757
+ end