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,246 @@
1
+ require "rss-testcase"
2
+
3
+ require "rss/maker"
4
+
5
+ module RSS
6
+ class TestSetupMaker09 < TestCase
7
+
8
+ def test_setup_maker_channel
9
+ title = "fugafuga"
10
+ link = "http://hoge.com"
11
+ description = "fugafugafugafuga"
12
+ language = "ja"
13
+ copyright = "foo"
14
+ managingEditor = "bar"
15
+ webMaster = "web master"
16
+ 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))'
17
+ docs = "http://foo.com/doc"
18
+ skipDays = [
19
+ "Sunday",
20
+ "Monday",
21
+ ]
22
+ skipHours = [
23
+ "0",
24
+ "13",
25
+ ]
26
+ pubDate = Time.now
27
+ lastBuildDate = Time.now
28
+
29
+ rss = RSS::Maker.make("0.91") do |maker|
30
+ maker.channel.title = title
31
+ maker.channel.link = link
32
+ maker.channel.description = description
33
+ maker.channel.language = language
34
+ maker.channel.copyright = copyright
35
+ maker.channel.managingEditor = managingEditor
36
+ maker.channel.webMaster = webMaster
37
+ maker.channel.rating = rating
38
+ maker.channel.docs = docs
39
+ maker.channel.pubDate = pubDate
40
+ maker.channel.lastBuildDate = lastBuildDate
41
+
42
+ skipDays.each do |day|
43
+ maker.channel.skipDays.new_day do |new_day|
44
+ new_day.content = day
45
+ end
46
+ end
47
+ skipHours.each do |hour|
48
+ maker.channel.skipHours.new_hour do |new_hour|
49
+ new_hour.content = hour
50
+ end
51
+ end
52
+
53
+ setup_dummy_image(maker)
54
+ end
55
+
56
+ assert_not_set_error("maker.image", %w(title url)) do
57
+ RSS::Maker.make("0.91") do |maker|
58
+ rss.channel.setup_maker(maker)
59
+ end
60
+ end
61
+
62
+ new_rss = RSS::Maker.make("0.91") do |maker|
63
+ rss.channel.setup_maker(maker)
64
+ setup_dummy_image(maker)
65
+ end
66
+ channel = new_rss.channel
67
+
68
+ assert_equal(title, channel.title)
69
+ assert_equal(link, channel.link)
70
+ assert_equal(description, channel.description)
71
+ assert_equal(language, channel.language)
72
+ assert_equal(copyright, channel.copyright)
73
+ assert_equal(managingEditor, channel.managingEditor)
74
+ assert_equal(webMaster, channel.webMaster)
75
+ assert_equal(rating, channel.rating)
76
+ assert_equal(docs, channel.docs)
77
+ assert_equal(pubDate, channel.pubDate)
78
+ assert_equal(lastBuildDate, channel.lastBuildDate)
79
+
80
+ skipDays.each_with_index do |day, i|
81
+ assert_equal(day, channel.skipDays.days[i].content)
82
+ end
83
+ skipHours.each_with_index do |hour, i|
84
+ assert_equal(hour.to_i, channel.skipHours.hours[i].content)
85
+ end
86
+
87
+ assert(channel.items.empty?)
88
+ assert_nil(channel.textInput)
89
+ end
90
+
91
+ def test_setup_maker_image
92
+ title = "fugafuga"
93
+ link = "http://hoge.com"
94
+ url = "http://hoge.com/hoge.png"
95
+ width = "144"
96
+ height = "400"
97
+ description = "an image"
98
+
99
+ rss = RSS::Maker.make("0.91") do |maker|
100
+ setup_dummy_channel(maker)
101
+ maker.channel.link = link
102
+
103
+ maker.image.title = title
104
+ maker.image.url = url
105
+ maker.image.width = width
106
+ maker.image.height = height
107
+ maker.image.description = description
108
+ end
109
+
110
+ new_rss = RSS::Maker.make("0.91") do |maker|
111
+ rss.channel.setup_maker(maker)
112
+ rss.image.setup_maker(maker)
113
+ end
114
+
115
+ image = new_rss.image
116
+ assert_equal(title, image.title)
117
+ assert_equal(link, image.link)
118
+ assert_equal(url, image.url)
119
+ assert_equal(width.to_i, image.width)
120
+ assert_equal(height.to_i, image.height)
121
+ assert_equal(description, image.description)
122
+ end
123
+
124
+ def test_setup_maker_textinput
125
+ title = "fugafuga"
126
+ description = "text hoge fuga"
127
+ name = "hoge"
128
+ link = "http://hoge.com"
129
+
130
+ rss = RSS::Maker.make("0.91") do |maker|
131
+ setup_dummy_channel(maker)
132
+ setup_dummy_image(maker)
133
+
134
+ maker.textinput.title = title
135
+ maker.textinput.description = description
136
+ maker.textinput.name = name
137
+ maker.textinput.link = link
138
+ end
139
+
140
+ new_rss = RSS::Maker.make("0.91") do |maker|
141
+ rss.channel.setup_maker(maker)
142
+ rss.image.setup_maker(maker)
143
+ rss.textinput.setup_maker(maker)
144
+ end
145
+
146
+ textInput = new_rss.channel.textInput
147
+ assert_equal(title, textInput.title)
148
+ assert_equal(description, textInput.description)
149
+ assert_equal(name, textInput.name)
150
+ assert_equal(link, textInput.link)
151
+ end
152
+
153
+ def test_setup_maker_items(for_backward_compatibility=false)
154
+ title = "TITLE"
155
+ link = "http://hoge.com/"
156
+ description = "text hoge fuga"
157
+
158
+ item_size = 5
159
+
160
+ rss = RSS::Maker.make("0.91") do |maker|
161
+ setup_dummy_channel(maker)
162
+
163
+ item_size.times do |i|
164
+ maker.items.new_item do |item|
165
+ item.title = "#{title}#{i}"
166
+ item.link = "#{link}#{i}"
167
+ item.description = "#{description}#{i}"
168
+ end
169
+ end
170
+
171
+ setup_dummy_image(maker)
172
+ end
173
+
174
+ new_rss = RSS::Maker.make("0.91") do |maker|
175
+ rss.channel.setup_maker(maker)
176
+
177
+ rss.items.each do |item|
178
+ if for_backward_compatibility
179
+ item.setup_maker(maker)
180
+ else
181
+ item.setup_maker(maker.items)
182
+ end
183
+ end
184
+
185
+ rss.image.setup_maker(maker)
186
+ end
187
+
188
+ assert_equal(item_size, new_rss.items.size)
189
+ new_rss.items.each_with_index do |item, i|
190
+ assert_equal("#{title}#{i}", item.title)
191
+ assert_equal("#{link}#{i}", item.link)
192
+ assert_equal("#{description}#{i}", item.description)
193
+ end
194
+ end
195
+
196
+ def test_setup_maker_items_backward_compatibility
197
+ test_setup_maker_items(true)
198
+ end
199
+
200
+ def test_setup_maker
201
+ encoding = "EUC-JP"
202
+ standalone = true
203
+
204
+ href = 'a.xsl'
205
+ type = 'text/xsl'
206
+ title = 'sample'
207
+ media = 'printer'
208
+ charset = 'UTF-8'
209
+ alternate = 'yes'
210
+
211
+ rss = RSS::Maker.make("0.91") do |maker|
212
+ maker.encoding = encoding
213
+ maker.standalone = standalone
214
+
215
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
216
+ xss.href = href
217
+ xss.type = type
218
+ xss.title = title
219
+ xss.media = media
220
+ xss.charset = charset
221
+ xss.alternate = alternate
222
+ end
223
+
224
+ setup_dummy_channel(maker)
225
+ setup_dummy_image(maker)
226
+ end
227
+
228
+ new_rss = RSS::Maker.make("0.91") do |maker|
229
+ rss.setup_maker(maker)
230
+ end
231
+
232
+ assert_equal("0.91", new_rss.rss_version)
233
+ assert_equal(encoding, new_rss.encoding)
234
+ assert_equal(standalone, new_rss.standalone)
235
+
236
+ xss = rss.xml_stylesheets.first
237
+ assert_equal(1, rss.xml_stylesheets.size)
238
+ assert_equal(href, xss.href)
239
+ assert_equal(type, xss.type)
240
+ assert_equal(title, xss.title)
241
+ assert_equal(media, xss.media)
242
+ assert_equal(charset, xss.charset)
243
+ assert_equal(alternate, xss.alternate)
244
+ end
245
+ end
246
+ end
@@ -0,0 +1,550 @@
1
+ require "rss-testcase"
2
+
3
+ require "rss/maker"
4
+
5
+ module RSS
6
+ class TestSetupMaker10 < TestCase
7
+
8
+ def setup
9
+ t = Time.iso8601("2000-01-01T12:00:05+00:00")
10
+ class << t
11
+ alias_method(:to_s, :iso8601)
12
+ end
13
+
14
+ @dc_elems = {
15
+ :title => "hoge",
16
+ :description =>
17
+ " XML is placing increasingly heavy loads on
18
+ the existing technical infrastructure of the Internet.",
19
+ :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
20
+ :subject => "XML",
21
+ :publisher => "The O'Reilly Network",
22
+ :contributor => "hogehoge",
23
+ :type => "fugafuga",
24
+ :format => "hohoho",
25
+ :identifier => "fufufu",
26
+ :source => "barbar",
27
+ :language => "ja",
28
+ :relation => "cococo",
29
+ :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
30
+ :date => t,
31
+ }
32
+
33
+ @sy_elems = {
34
+ :updatePeriod => "hourly",
35
+ :updateFrequency => "2",
36
+ :updateBase => t,
37
+ }
38
+
39
+ @content_elems = {
40
+ :encoded => "<em>ATTENTION</em>",
41
+ }
42
+
43
+ @trackback_elems = {
44
+ :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
45
+ :about => [
46
+ "http://foo.com/trackback/tb.cgi?tb_id=20020923",
47
+ "http://foo.com/trackback/tb.cgi?tb_id=20021010",
48
+ ],
49
+ }
50
+
51
+ @taxo_topic_elems = [
52
+ {
53
+ :link => "http://meerkat.oreillynet.com/?c=cat23",
54
+ :title => "Data: XML",
55
+ :description => "A Meerkat channel",
56
+ },
57
+ {
58
+ :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
59
+ :title => "XML",
60
+ :subject => "XML",
61
+ :description => "DMOZ category",
62
+ :topics => [
63
+ "http://meerkat.oreillynet.com/?c=cat23",
64
+ "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/",
65
+ "http://dmoz.org/Computers/Programming/Internet/",
66
+ ]
67
+ },
68
+ ]
69
+ end
70
+
71
+ def test_setup_maker_channel
72
+ about = "http://hoge.com"
73
+ title = "fugafuga"
74
+ link = "http://hoge.com"
75
+ description = "fugafugafugafuga"
76
+
77
+ rss = RSS::Maker.make("1.0") do |maker|
78
+ maker.channel.about = about
79
+ maker.channel.title = title
80
+ maker.channel.link = link
81
+ maker.channel.description = description
82
+
83
+ @dc_elems.each do |var, value|
84
+ maker.channel.__send__("dc_#{var}=", value)
85
+ end
86
+
87
+ @sy_elems.each do |var, value|
88
+ maker.channel.__send__("sy_#{var}=", value)
89
+ end
90
+
91
+ setup_dummy_item(maker)
92
+ end
93
+
94
+ new_rss = RSS::Maker.make("1.0") do |maker|
95
+ rss.channel.setup_maker(maker)
96
+ rss.items.each do |item|
97
+ item.setup_maker(maker)
98
+ end
99
+ end
100
+ channel = new_rss.channel
101
+
102
+ assert_equal(about, channel.about)
103
+ assert_equal(title, channel.title)
104
+ assert_equal(link, channel.link)
105
+ assert_equal(description, channel.description)
106
+ assert_equal(1, channel.items.Seq.lis.size)
107
+ assert_nil(channel.image)
108
+ assert_nil(channel.textinput)
109
+
110
+ @dc_elems.each do |var, value|
111
+ assert_equal(value, channel.__send__("dc_#{var}"))
112
+ end
113
+
114
+ @sy_elems.each do |var, value|
115
+ value = value.to_i if var == :updateFrequency
116
+ assert_equal(value, channel.__send__("sy_#{var}"))
117
+ end
118
+
119
+ end
120
+
121
+ def test_setup_maker_image
122
+ title = "fugafuga"
123
+ link = "http://hoge.com"
124
+ url = "http://hoge.com/hoge.png"
125
+
126
+ rss = RSS::Maker.make("1.0") do |maker|
127
+ setup_dummy_channel(maker)
128
+ maker.channel.link = link
129
+
130
+ maker.image.title = title
131
+ maker.image.url = url
132
+
133
+ @dc_elems.each do |var, value|
134
+ maker.image.__send__("dc_#{var}=", value)
135
+ end
136
+
137
+ setup_dummy_item(maker)
138
+ end
139
+
140
+ new_rss = RSS::Maker.make("1.0") do |maker|
141
+ rss.channel.setup_maker(maker)
142
+ rss.image.setup_maker(maker)
143
+ rss.items.each do |item|
144
+ item.setup_maker(maker)
145
+ end
146
+ end
147
+
148
+ image = new_rss.image
149
+ assert_equal(url, image.about)
150
+ assert_equal(url, new_rss.channel.image.resource)
151
+ assert_equal(title, image.title)
152
+ assert_equal(link, image.link)
153
+ assert_equal(url, image.url)
154
+
155
+ @dc_elems.each do |var, value|
156
+ assert_equal(image.__send__("dc_#{var}"), value)
157
+ end
158
+ end
159
+
160
+ def test_setup_maker_textinput
161
+ title = "fugafuga"
162
+ description = "text hoge fuga"
163
+ name = "hoge"
164
+ link = "http://hoge.com"
165
+
166
+ rss = RSS::Maker.make("1.0") do |maker|
167
+ setup_dummy_channel(maker)
168
+
169
+ maker.textinput.link = link
170
+ maker.textinput.title = title
171
+ maker.textinput.description = description
172
+ maker.textinput.name = name
173
+
174
+ @dc_elems.each do |var, value|
175
+ maker.textinput.__send__("dc_#{var}=", value)
176
+ end
177
+
178
+ setup_dummy_item(maker)
179
+ end
180
+
181
+ new_rss = RSS::Maker.make("1.0") do |maker|
182
+ rss.channel.setup_maker(maker)
183
+ rss.textinput.setup_maker(maker)
184
+ rss.items.each do |item|
185
+ item.setup_maker(maker)
186
+ end
187
+ end
188
+
189
+ textinput = new_rss.textinput
190
+ assert_equal(link, textinput.about)
191
+ assert_equal(link, new_rss.channel.textinput.resource)
192
+ assert_equal(title, textinput.title)
193
+ assert_equal(name, textinput.name)
194
+ assert_equal(description, textinput.description)
195
+ assert_equal(link, textinput.link)
196
+
197
+ @dc_elems.each do |var, value|
198
+ assert_equal(textinput.__send__("dc_#{var}"), value)
199
+ end
200
+ end
201
+
202
+ def test_setup_maker_items(for_backward_compatibility=false)
203
+ title = "TITLE"
204
+ link = "http://hoge.com/"
205
+ description = "text hoge fuga"
206
+
207
+ item_size = 5
208
+
209
+ rss = RSS::Maker.make("1.0") do |maker|
210
+ setup_dummy_channel(maker)
211
+
212
+ item_size.times do |i|
213
+ maker.items.new_item do |item|
214
+ item.title = "#{title}#{i}"
215
+ item.link = "#{link}#{i}"
216
+ item.description = "#{description}#{i}"
217
+
218
+ @dc_elems.each do |var, value|
219
+ item.__send__("dc_#{var}=", value)
220
+ end
221
+
222
+ @content_elems.each do |var, value|
223
+ item.__send__("content_#{var}=", value)
224
+ end
225
+
226
+ item.trackback_ping = @trackback_elems[:ping]
227
+ @trackback_elems[:about].each do |value|
228
+ item.trackback_abouts.new_about do |new_about|
229
+ new_about.value = value
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
235
+
236
+ new_rss = RSS::Maker.make("1.0") do |maker|
237
+ rss.channel.setup_maker(maker)
238
+
239
+ rss.items.each do |item|
240
+ if for_backward_compatibility
241
+ item.setup_maker(maker)
242
+ else
243
+ item.setup_maker(maker.items)
244
+ end
245
+ end
246
+ end
247
+
248
+ assert_equal(item_size, new_rss.items.size)
249
+ new_rss.items.each_with_index do |item, i|
250
+ assert_equal("#{link}#{i}", item.about)
251
+ assert_equal("#{title}#{i}", item.title)
252
+ assert_equal("#{link}#{i}", item.link)
253
+ assert_equal("#{description}#{i}", item.description)
254
+
255
+ @dc_elems.each do |var, value|
256
+ assert_equal(item.__send__("dc_#{var}"), value)
257
+ end
258
+
259
+ @content_elems.each do |var, value|
260
+ assert_equal(item.__send__("content_#{var}"), value)
261
+ end
262
+
263
+ assert_equal(@trackback_elems[:ping], item.trackback_ping)
264
+ assert_equal(@trackback_elems[:about].size, item.trackback_abouts.size)
265
+ item.trackback_abouts.each_with_index do |about, j|
266
+ assert_equal(@trackback_elems[:about][j], about.value)
267
+ end
268
+ end
269
+ end
270
+
271
+ def test_setup_maker_items_sort
272
+ title = "TITLE"
273
+ link = "http://hoge.com/"
274
+ description = "text hoge fuga"
275
+
276
+ item_size = 5
277
+
278
+ rss = RSS::Maker.make("1.0") do |maker|
279
+ setup_dummy_channel(maker)
280
+
281
+ item_size.times do |i|
282
+ item = RSS::RDF::Item.new("#{link}#{i}")
283
+ item.title = "#{title}#{i}"
284
+ item.link = "#{link}#{i}"
285
+ item.description = "#{description}#{i}"
286
+ item.dc_date = Time.now + i * 60
287
+ item.setup_maker(maker.items)
288
+ end
289
+ maker.items.do_sort = false
290
+ end
291
+ assert_equal(item_size, rss.items.size)
292
+ rss.items.each_with_index do |item, i|
293
+ assert_equal("#{link}#{i}", item.about)
294
+ assert_equal("#{title}#{i}", item.title)
295
+ assert_equal("#{link}#{i}", item.link)
296
+ assert_equal("#{description}#{i}", item.description)
297
+ end
298
+
299
+
300
+ rss = RSS::Maker.make("1.0") do |maker|
301
+ setup_dummy_channel(maker)
302
+
303
+ item_size.times do |i|
304
+ item = RSS::RDF::Item.new("#{link}#{i}")
305
+ item.title = "#{title}#{i}"
306
+ item.link = "#{link}#{i}"
307
+ item.description = "#{description}#{i}"
308
+ item.dc_date = Time.now + i * 60
309
+ item.setup_maker(maker.items)
310
+ end
311
+ maker.items.do_sort = true
312
+ end
313
+ assert_equal(item_size, rss.items.size)
314
+ rss.items.reverse.each_with_index do |item, i|
315
+ assert_equal("#{link}#{i}", item.about)
316
+ assert_equal("#{title}#{i}", item.title)
317
+ assert_equal("#{link}#{i}", item.link)
318
+ assert_equal("#{description}#{i}", item.description)
319
+ end
320
+ end
321
+
322
+ def test_setup_maker_items_backward_compatibility
323
+ test_setup_maker_items(true)
324
+ end
325
+
326
+ def test_setup_maker
327
+ encoding = "EUC-JP"
328
+ standalone = true
329
+
330
+ href = 'a.xsl'
331
+ type = 'text/xsl'
332
+ title = 'sample'
333
+ media = 'printer'
334
+ charset = 'UTF-8'
335
+ alternate = 'yes'
336
+
337
+ rss = RSS::Maker.make("1.0") do |maker|
338
+ maker.encoding = encoding
339
+ maker.standalone = standalone
340
+
341
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
342
+ xss.href = href
343
+ xss.type = type
344
+ xss.title = title
345
+ xss.media = media
346
+ xss.charset = charset
347
+ xss.alternate = alternate
348
+ end
349
+
350
+ setup_dummy_channel(maker)
351
+ setup_dummy_item(maker)
352
+ end
353
+
354
+ new_rss = RSS::Maker.make("1.0") do |maker|
355
+ rss.setup_maker(maker)
356
+ end
357
+
358
+ assert_equal("1.0", new_rss.rss_version)
359
+ assert_equal(encoding, new_rss.encoding)
360
+ assert_equal(standalone, new_rss.standalone)
361
+
362
+ xss = new_rss.xml_stylesheets.first
363
+ assert_equal(1, new_rss.xml_stylesheets.size)
364
+ assert_equal(href, xss.href)
365
+ assert_equal(type, xss.type)
366
+ assert_equal(title, xss.title)
367
+ assert_equal(media, xss.media)
368
+ assert_equal(charset, xss.charset)
369
+ assert_equal(alternate, xss.alternate)
370
+ end
371
+
372
+ def test_setup_maker_full
373
+ encoding = "EUC-JP"
374
+ standalone = true
375
+
376
+ href = 'a.xsl'
377
+ type = 'text/xsl'
378
+ title = 'sample'
379
+ media = 'printer'
380
+ charset = 'UTF-8'
381
+ alternate = 'yes'
382
+
383
+ channel_about = "http://hoge.com"
384
+ channel_title = "fugafuga"
385
+ channel_link = "http://hoge.com"
386
+ channel_description = "fugafugafugafuga"
387
+
388
+ image_title = "fugafuga"
389
+ image_url = "http://hoge.com/hoge.png"
390
+
391
+ textinput_title = "fugafuga"
392
+ textinput_description = "text hoge fuga"
393
+ textinput_name = "hoge"
394
+ textinput_link = "http://hoge.com"
395
+
396
+ item_title = "TITLE"
397
+ item_link = "http://hoge.com/"
398
+ item_description = "text hoge fuga"
399
+
400
+ item_size = 5
401
+
402
+ rss = RSS::Maker.make("1.0") do |maker|
403
+ maker.encoding = encoding
404
+ maker.standalone = standalone
405
+
406
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
407
+ xss.href = href
408
+ xss.type = type
409
+ xss.title = title
410
+ xss.media = media
411
+ xss.charset = charset
412
+ xss.alternate = alternate
413
+ end
414
+
415
+ maker.channel.about = channel_about
416
+ maker.channel.title = channel_title
417
+ maker.channel.link = channel_link
418
+ maker.channel.description = channel_description
419
+ @dc_elems.each do |var, value|
420
+ maker.channel.__send__("dc_#{var}=", value)
421
+ end
422
+ @sy_elems.each do |var, value|
423
+ maker.channel.__send__("sy_#{var}=", value)
424
+ end
425
+
426
+ maker.image.title = image_title
427
+ maker.image.url = image_url
428
+ @dc_elems.each do |var, value|
429
+ maker.image.__send__("dc_#{var}=", value)
430
+ end
431
+
432
+ maker.textinput.link = textinput_link
433
+ maker.textinput.title = textinput_title
434
+ maker.textinput.description = textinput_description
435
+ maker.textinput.name = textinput_name
436
+ @dc_elems.each do |var, value|
437
+ maker.textinput.__send__("dc_#{var}=", value)
438
+ end
439
+
440
+ item_size.times do |i|
441
+ maker.items.new_item do |item|
442
+ item.title = "#{item_title}#{i}"
443
+ item.link = "#{item_link}#{i}"
444
+ item.description = "#{item_description}#{i}"
445
+
446
+ @dc_elems.each do |var, value|
447
+ item.__send__("dc_#{var}=", value)
448
+ end
449
+
450
+ @content_elems.each do |var, value|
451
+ item.__send__("content_#{var}=", value)
452
+ end
453
+
454
+ item.trackback_ping = @trackback_elems[:ping]
455
+ @trackback_elems[:about].each do |value|
456
+ item.trackback_abouts.new_about do |new_about|
457
+ new_about.value = value
458
+ end
459
+ end
460
+ end
461
+ end
462
+
463
+ setup_taxo_topic(maker, @taxo_topic_elems)
464
+ end
465
+
466
+ new_rss = RSS::Maker.make("1.0") do |maker|
467
+ rss.setup_maker(maker)
468
+ end
469
+
470
+ assert_equal("1.0", new_rss.rss_version)
471
+ assert_equal(encoding, new_rss.encoding)
472
+ assert_equal(standalone, new_rss.standalone)
473
+
474
+ xss = new_rss.xml_stylesheets.first
475
+ assert_equal(1, new_rss.xml_stylesheets.size)
476
+ assert_equal(href, xss.href)
477
+ assert_equal(type, xss.type)
478
+ assert_equal(title, xss.title)
479
+ assert_equal(media, xss.media)
480
+ assert_equal(charset, xss.charset)
481
+ assert_equal(alternate, xss.alternate)
482
+
483
+ channel = new_rss.channel
484
+ assert_equal(channel_about, channel.about)
485
+ assert_equal(channel_title, channel.title)
486
+ assert_equal(channel_link, channel.link)
487
+ assert_equal(channel_description, channel.description)
488
+ item_resources = []
489
+ item_size.times do |i|
490
+ item_resources << "#{item_link}#{i}"
491
+ end
492
+ assert_equal(item_resources, channel.items.resources)
493
+ assert_equal(image_url, channel.image.resource)
494
+ assert_equal(textinput_link, channel.textinput.resource)
495
+ @dc_elems.each do |var, value|
496
+ assert_equal(value, channel.__send__("dc_#{var}"))
497
+ end
498
+ @sy_elems.each do |var, value|
499
+ value = value.to_i if var == :updateFrequency
500
+ assert_equal(value, channel.__send__("sy_#{var}"))
501
+ end
502
+
503
+ image = new_rss.image
504
+ assert_equal(image_url, image.about)
505
+ assert_equal(image_url, new_rss.channel.image.resource)
506
+ assert_equal(image_title, image.title)
507
+ assert_equal(channel_link, image.link)
508
+ assert_equal(image_url, image.url)
509
+ @dc_elems.each do |var, value|
510
+ assert_equal(image.__send__("dc_#{var}"), value)
511
+ end
512
+
513
+ textinput = new_rss.textinput
514
+ assert_equal(textinput_link, textinput.about)
515
+ assert_equal(textinput_link, new_rss.channel.textinput.resource)
516
+ assert_equal(textinput_title, textinput.title)
517
+ assert_equal(textinput_name, textinput.name)
518
+ assert_equal(textinput_description, textinput.description)
519
+ assert_equal(textinput_link, textinput.link)
520
+ @dc_elems.each do |var, value|
521
+ assert_equal(textinput.__send__("dc_#{var}"), value)
522
+ end
523
+
524
+ assert_equal(item_size, new_rss.items.size)
525
+ new_rss.items.each_with_index do |item, i|
526
+ assert_equal("#{item_link}#{i}", item.about)
527
+ assert_equal("#{item_title}#{i}", item.title)
528
+ assert_equal("#{item_link}#{i}", item.link)
529
+ assert_equal("#{item_description}#{i}", item.description)
530
+
531
+ @dc_elems.each do |var, value|
532
+ assert_equal(item.__send__("dc_#{var}"), value)
533
+ end
534
+
535
+ @content_elems.each do |var, value|
536
+ assert_equal(item.__send__("content_#{var}"), value)
537
+ end
538
+
539
+ assert_equal(@trackback_elems[:ping], item.trackback_ping)
540
+ assert_equal(@trackback_elems[:about].size, item.trackback_abouts.size)
541
+ item.trackback_abouts.each_with_index do |about, j|
542
+ assert_equal(@trackback_elems[:about][j], about.value)
543
+ end
544
+ end
545
+
546
+ assert_taxo_topic(@taxo_topic_elems, new_rss)
547
+ end
548
+
549
+ end
550
+ end