rss 0.2.8 → 0.2.9

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