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,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