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,309 @@
1
+ # frozen_string_literal: false
2
+ require_relative "rss-testcase"
3
+
4
+ require "rss/maker"
5
+
6
+ module RSS
7
+ class TestSetupMaker20 < 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
+ categories = [
30
+ "Nespapers",
31
+ "misc",
32
+ ]
33
+ generator = "RSS Maker"
34
+ ttl = "60"
35
+
36
+ rss = RSS::Maker.make("2.0") do |maker|
37
+ maker.channel.title = title
38
+ maker.channel.link = link
39
+ maker.channel.description = description
40
+ maker.channel.language = language
41
+ maker.channel.copyright = copyright
42
+ maker.channel.managingEditor = managingEditor
43
+ maker.channel.webMaster = webMaster
44
+ maker.channel.rating = rating
45
+ maker.channel.docs = docs
46
+ maker.channel.pubDate = pubDate
47
+ maker.channel.lastBuildDate = lastBuildDate
48
+
49
+ skipDays.each do |day|
50
+ maker.channel.skipDays.new_day do |new_day|
51
+ new_day.content = day
52
+ end
53
+ end
54
+ skipHours.each do |hour|
55
+ maker.channel.skipHours.new_hour do |new_hour|
56
+ new_hour.content = hour
57
+ end
58
+ end
59
+
60
+
61
+ categories.each do |category|
62
+ maker.channel.categories.new_category do |new_category|
63
+ new_category.content = category
64
+ end
65
+ end
66
+
67
+ maker.channel.generator = generator
68
+ maker.channel.ttl = ttl
69
+ end
70
+
71
+ new_rss = RSS::Maker.make("2.0") do |maker|
72
+ rss.channel.setup_maker(maker)
73
+ end
74
+ channel = new_rss.channel
75
+
76
+ assert_equal(title, channel.title)
77
+ assert_equal(link, channel.link)
78
+ assert_equal(description, channel.description)
79
+ assert_equal(language, channel.language)
80
+ assert_equal(copyright, channel.copyright)
81
+ assert_equal(managingEditor, channel.managingEditor)
82
+ assert_equal(webMaster, channel.webMaster)
83
+ assert_equal(rating, channel.rating)
84
+ assert_equal(docs, channel.docs)
85
+ assert_equal(pubDate, channel.pubDate)
86
+ assert_equal(lastBuildDate, channel.lastBuildDate)
87
+
88
+ skipDays.each_with_index do |day, i|
89
+ assert_equal(day, channel.skipDays.days[i].content)
90
+ end
91
+ skipHours.each_with_index do |hour, i|
92
+ assert_equal(hour.to_i, channel.skipHours.hours[i].content)
93
+ end
94
+
95
+
96
+ channel.categories.each_with_index do |category, i|
97
+ assert_equal(categories[i], category.content)
98
+ end
99
+
100
+ assert_equal(generator, channel.generator)
101
+ assert_equal(ttl.to_i, channel.ttl)
102
+
103
+
104
+ assert(channel.items.empty?)
105
+ assert_nil(channel.image)
106
+ assert_nil(channel.textInput)
107
+ end
108
+
109
+ def test_setup_maker_image
110
+ title = "fugafuga"
111
+ link = "http://hoge.com"
112
+ url = "http://hoge.com/hoge.png"
113
+ width = "144"
114
+ height = "400"
115
+ description = "an image"
116
+
117
+ rss = RSS::Maker.make("2.0") do |maker|
118
+ setup_dummy_channel(maker)
119
+ maker.channel.link = link
120
+
121
+ maker.image.title = title
122
+ maker.image.url = url
123
+ maker.image.width = width
124
+ maker.image.height = height
125
+ maker.image.description = description
126
+ end
127
+
128
+ new_rss = RSS::Maker.make("2.0") do |maker|
129
+ rss.channel.setup_maker(maker)
130
+ rss.image.setup_maker(maker)
131
+ end
132
+
133
+ image = new_rss.image
134
+ assert_equal(title, image.title)
135
+ assert_equal(link, image.link)
136
+ assert_equal(url, image.url)
137
+ assert_equal(width.to_i, image.width)
138
+ assert_equal(height.to_i, image.height)
139
+ assert_equal(description, image.description)
140
+ end
141
+
142
+ def test_setup_maker_textinput
143
+ title = "fugafuga"
144
+ description = "text hoge fuga"
145
+ name = "hoge"
146
+ link = "http://hoge.com"
147
+
148
+ rss = RSS::Maker.make("2.0") do |maker|
149
+ setup_dummy_channel(maker)
150
+
151
+ maker.textinput.title = title
152
+ maker.textinput.description = description
153
+ maker.textinput.name = name
154
+ maker.textinput.link = link
155
+ end
156
+
157
+ new_rss = RSS::Maker.make("2.0") do |maker|
158
+ rss.channel.setup_maker(maker)
159
+ rss.textinput.setup_maker(maker)
160
+ end
161
+
162
+ textInput = new_rss.channel.textInput
163
+ assert_equal(title, textInput.title)
164
+ assert_equal(description, textInput.description)
165
+ assert_equal(name, textInput.name)
166
+ assert_equal(link, textInput.link)
167
+ end
168
+
169
+ def test_setup_maker_items(for_backward_compatibility=false)
170
+ title = "TITLE"
171
+ link = "http://hoge.com/"
172
+ description = "text hoge fuga"
173
+ author = "oprah@oxygen.net"
174
+ comments = "http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290"
175
+ pubDate = Time.now
176
+
177
+ guid_isPermaLink = "true"
178
+ guid_content = "http://inessential.com/2002/09/01.php#a2"
179
+
180
+ enclosure_url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
181
+ enclosure_length = "12216320"
182
+ enclosure_type = "audio/mpeg"
183
+
184
+ source_url = "http://static.userland.com/tomalak/links2.xml"
185
+ source_content = "Tomalak's Realm"
186
+
187
+ category_domain = "http://www.fool.com/cusips"
188
+ category_content = "MSFT"
189
+
190
+ item_size = 5
191
+
192
+ rss = RSS::Maker.make("2.0") do |maker|
193
+ setup_dummy_channel(maker)
194
+
195
+ item_size.times do |i|
196
+ maker.items.new_item do |item|
197
+ item.title = "#{title}#{i}"
198
+ item.link = "#{link}#{i}"
199
+ item.description = "#{description}#{i}"
200
+ item.author = "#{author}#{i}"
201
+ item.comments = "#{comments}#{i}"
202
+ item.date = pubDate
203
+
204
+ item.guid.isPermaLink = guid_isPermaLink
205
+ item.guid.content = guid_content
206
+
207
+ item.enclosure.url = enclosure_url
208
+ item.enclosure.length = enclosure_length
209
+ item.enclosure.type = enclosure_type
210
+
211
+ item.source.url = source_url
212
+ item.source.content = source_content
213
+
214
+ category = item.categories.new_category
215
+ category.domain = category_domain
216
+ category.content = category_content
217
+ end
218
+ end
219
+ end
220
+
221
+ new_rss = RSS::Maker.make("2.0") do |maker|
222
+ rss.channel.setup_maker(maker)
223
+
224
+ rss.items.each do |item|
225
+ if for_backward_compatibility
226
+ item.setup_maker(maker)
227
+ else
228
+ item.setup_maker(maker.items)
229
+ end
230
+ end
231
+ end
232
+
233
+ assert_equal(item_size, new_rss.items.size)
234
+ new_rss.items.each_with_index do |item, i|
235
+ assert_equal("#{title}#{i}", item.title)
236
+ assert_equal("#{link}#{i}", item.link)
237
+ assert_equal("#{description}#{i}", item.description)
238
+ assert_equal("#{author}#{i}", item.author)
239
+ assert_equal("#{comments}#{i}", item.comments)
240
+ assert_equal(pubDate, item.pubDate)
241
+
242
+ assert_equal(guid_isPermaLink == "true", item.guid.isPermaLink)
243
+ assert_equal(guid_content, item.guid.content)
244
+
245
+ assert_equal(enclosure_url, item.enclosure.url)
246
+ assert_equal(enclosure_length.to_i, item.enclosure.length)
247
+ assert_equal(enclosure_type, item.enclosure.type)
248
+
249
+ assert_equal(source_url, item.source.url)
250
+ assert_equal(source_content, item.source.content)
251
+
252
+ assert_equal(1, item.categories.size)
253
+ assert_equal(category_domain, item.category.domain)
254
+ assert_equal(category_content, item.category.content)
255
+ end
256
+
257
+ end
258
+
259
+ def test_setup_maker_items_backward_compatibility
260
+ test_setup_maker_items(true)
261
+ end
262
+
263
+ def test_setup_maker
264
+ encoding = "EUC-JP"
265
+ standalone = true
266
+
267
+ href = 'a.xsl'
268
+ type = 'text/xsl'
269
+ title = 'sample'
270
+ media = 'printer'
271
+ charset = 'UTF-8'
272
+ alternate = 'yes'
273
+
274
+ rss = RSS::Maker.make("2.0") do |maker|
275
+ maker.encoding = encoding
276
+ maker.standalone = standalone
277
+
278
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
279
+ xss.href = href
280
+ xss.type = type
281
+ xss.title = title
282
+ xss.media = media
283
+ xss.charset = charset
284
+ xss.alternate = alternate
285
+ end
286
+
287
+ setup_dummy_channel(maker)
288
+ end
289
+
290
+ new_rss = RSS::Maker.make("2.0") do |maker|
291
+ rss.setup_maker(maker)
292
+ end
293
+
294
+ assert_equal("2.0", new_rss.rss_version)
295
+ assert_equal(encoding, new_rss.encoding)
296
+ assert_equal(standalone, new_rss.standalone)
297
+
298
+ xss = rss.xml_stylesheets.first
299
+ assert_equal(1, rss.xml_stylesheets.size)
300
+ assert_equal(href, xss.href)
301
+ assert_equal(type, xss.type)
302
+ assert_equal(title, xss.title)
303
+ assert_equal(media, xss.media)
304
+ assert_equal(charset, xss.charset)
305
+ assert_equal(alternate, xss.alternate)
306
+ end
307
+
308
+ end
309
+ end
@@ -0,0 +1,410 @@
1
+ # frozen_string_literal: false
2
+ require_relative "rss-testcase"
3
+
4
+ require "rss/maker"
5
+
6
+ module RSS
7
+ class TestSetupMakerAtomEntry < TestCase
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
+ end
33
+
34
+ def test_setup_maker_entry(with_dc=true)
35
+ authors = [
36
+ {
37
+ :name => "Bob",
38
+ :uri => "http://example.com/~bob/",
39
+ :email => "bob@example.com",
40
+ },
41
+ {
42
+ :name => "Alice",
43
+ :uri => "http://example.com/~alice/",
44
+ :email => "alice@example.com",
45
+ },
46
+ ]
47
+ categories = [
48
+ {
49
+ :term => "music",
50
+ :label => "Music",
51
+ },
52
+ {
53
+ :term => "book",
54
+ :scheme => "http://example.com/category/book/",
55
+ :label => "Book",
56
+ },
57
+ ]
58
+ contributors = [
59
+ {
60
+ :name => "Chris",
61
+ :email => "chris@example.com",
62
+ },
63
+ {
64
+ :name => "Eva",
65
+ :uri => "http://example.com/~eva/",
66
+ },
67
+ ]
68
+ id = "urn:uuid:8b105336-7e20-45fc-bb78-37fb3e1db25a"
69
+ link = "http://hoge.com"
70
+ published = Time.now - 60 * 3600
71
+ rights = "Copyrights (c) 2007 Alice and Bob"
72
+ description = "fugafugafugafuga"
73
+ title = "fugafuga"
74
+ updated = Time.now
75
+
76
+ feed = RSS::Maker.make("atom:entry") do |maker|
77
+ maker.items.new_item do |item|
78
+ authors.each do |author_info|
79
+ item.authors.new_author do |author|
80
+ author_info.each do |key, value|
81
+ author.__send__("#{key}=", value)
82
+ end
83
+ end
84
+ end
85
+
86
+ categories.each do |category_info|
87
+ item.categories.new_category do |category|
88
+ category_info.each do |key, value|
89
+ category.__send__("#{key}=", value)
90
+ end
91
+ end
92
+ end
93
+
94
+ contributors.each do |contributor_info|
95
+ item.contributors.new_contributor do |contributor|
96
+ contributor_info.each do |key, value|
97
+ contributor.__send__("#{key}=", value)
98
+ end
99
+ end
100
+ end
101
+
102
+ item.id = id
103
+ item.link = link
104
+ item.published = published
105
+ item.rights = rights
106
+ item.description = description
107
+ item.title = title
108
+ item.updated = updated
109
+
110
+ if with_dc
111
+ @dc_elems.each do |var, value|
112
+ if var == :date
113
+ item.new_dc_date(value)
114
+ else
115
+ item.__send__("dc_#{var}=", value)
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+ assert_not_nil(feed)
122
+
123
+ new_feed = RSS::Maker.make("atom:entry") do |maker|
124
+ feed.setup_maker(maker)
125
+ end
126
+ assert_not_nil(new_feed)
127
+
128
+ new_authors = new_feed.authors.collect do |author|
129
+ {
130
+ :name => author.name.content,
131
+ :uri => author.uri.content,
132
+ :email => author.email.content,
133
+ }
134
+ end
135
+ assert_equal(authors, new_authors)
136
+
137
+ new_categories = new_feed.categories.collect do |category|
138
+ {
139
+ :term => category.term,
140
+ :scheme => category.scheme,
141
+ :label => category.label,
142
+ }.reject {|key, value| value.nil?}
143
+ end
144
+ assert_equal(categories, new_categories)
145
+
146
+ new_contributors = new_feed.contributors.collect do |contributor|
147
+ info = {}
148
+ info[:name] = contributor.name.content
149
+ info[:uri] = contributor.uri.content if contributor.uri
150
+ info[:email] = contributor.email.content if contributor.email
151
+ info
152
+ end
153
+ assert_equal(contributors, new_contributors)
154
+
155
+ assert_equal(id, new_feed.id.content)
156
+ assert_equal(link, new_feed.link.href)
157
+ assert_equal(published, new_feed.published.content)
158
+ assert_equal(rights, new_feed.rights.content)
159
+ assert_equal(description, new_feed.summary.content)
160
+ assert_equal(title, new_feed.title.content)
161
+ assert_equal(updated, new_feed.updated.content)
162
+
163
+ if with_dc
164
+ @dc_elems.each do |var, value|
165
+ if var == :date
166
+ assert_equal([updated, value],
167
+ new_feed.dc_dates.collect {|date| date.value})
168
+ else
169
+ assert_equal(value, new_feed.__send__("dc_#{var}"))
170
+ end
171
+ end
172
+ end
173
+
174
+ assert_equal(1, new_feed.items.size)
175
+ end
176
+
177
+ def test_setup_maker_entry_without_dc
178
+ test_setup_maker_entry(false)
179
+ end
180
+
181
+ def test_setup_maker_items(for_backward_compatibility=false)
182
+ title = "TITLE"
183
+ link = "http://hoge.com/"
184
+ description = "text hoge fuga"
185
+ updated = Time.now
186
+
187
+ item_size = 5
188
+ feed = RSS::Maker.make("atom:entry") do |maker|
189
+ setup_dummy_channel_atom(maker)
190
+
191
+ item_size.times do |i|
192
+ maker.items.new_item do |item|
193
+ item.title = "#{title}#{i}"
194
+ item.link = "#{link}#{i}"
195
+ item.description = "#{description}#{i}"
196
+ item.updated = updated + i * 60
197
+ end
198
+ end
199
+ end
200
+
201
+ new_feed = RSS::Maker.make("atom:entry") do |maker|
202
+ feed.items.each do |item|
203
+ if for_backward_compatibility
204
+ item.setup_maker(maker)
205
+ else
206
+ item.setup_maker(maker.items)
207
+ end
208
+ end
209
+
210
+ feed.items.clear
211
+ feed.setup_maker(maker)
212
+ end
213
+
214
+ assert_equal(1, new_feed.items.size)
215
+ new_feed.items[0..1].each_with_index do |item, i|
216
+ assert_equal("#{title}#{i}", item.title.content)
217
+ assert_equal("#{link}#{i}", item.link.href)
218
+ assert_equal("#{description}#{i}", item.summary.content)
219
+ assert_equal(updated + i * 60, item.updated.content)
220
+ end
221
+ end
222
+
223
+ def test_setup_maker_items_sort
224
+ title = "TITLE"
225
+ link = "http://hoge.com/"
226
+ summary = "text hoge fuga"
227
+ updated = Time.now
228
+
229
+ feed_size = 5
230
+ feed = RSS::Maker.make("atom:entry") do |maker|
231
+ setup_dummy_channel_atom(maker)
232
+
233
+ feed_size.times do |i|
234
+ entry_class = RSS::Atom::Entry
235
+ entry = entry_class.new
236
+ entry.title = entry_class::Title.new(:content => "#{title}#{i}")
237
+ entry.links << entry_class::Link.new(:href => "#{link}#{i}")
238
+ entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
239
+ entry.updated = entry_class::Updated.new(:content => updated + i * 60)
240
+ entry.setup_maker(maker.items)
241
+ end
242
+ maker.items.do_sort = false
243
+ end
244
+ assert_equal(1, feed.items.size)
245
+
246
+ assert_equal("#{title}0", feed.title.content)
247
+ assert_equal("#{link}0", feed.link.href)
248
+ assert_equal("#{summary}0", feed.summary.content)
249
+
250
+
251
+ feed = RSS::Maker.make("atom:entry") do |maker|
252
+ setup_dummy_channel_atom(maker)
253
+
254
+ feed_size.times do |i|
255
+ entry_class = RSS::Atom::Entry
256
+ entry = entry_class.new
257
+ entry.title = entry_class::Title.new(:content => "#{title}#{i}")
258
+ entry.links << entry_class::Link.new(:href => "#{link}#{i}")
259
+ entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
260
+ entry.updated = entry_class::Updated.new(:content => updated + i * 60)
261
+ entry.setup_maker(maker.items)
262
+ end
263
+ maker.items.do_sort = true
264
+ end
265
+ assert_equal(1, feed.items.size)
266
+
267
+ assert_equal("#{title}#{feed_size - 1}", feed.title.content)
268
+ assert_equal("#{link}#{feed_size - 1}", feed.link.href)
269
+ assert_equal("#{summary}#{feed_size - 1}", feed.summary.content)
270
+ end
271
+
272
+ def test_setup_maker_items_backward_compatibility
273
+ test_setup_maker_items(true)
274
+ end
275
+
276
+ def test_setup_maker
277
+ encoding = "EUC-JP"
278
+ standalone = true
279
+
280
+ href = 'a.xsl'
281
+ type = 'text/xsl'
282
+ title = 'sample'
283
+ media = 'printer'
284
+ charset = 'UTF-8'
285
+ alternate = 'yes'
286
+
287
+ feed = RSS::Maker.make("atom:entry") do |maker|
288
+ maker.encoding = encoding
289
+ maker.standalone = standalone
290
+
291
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
292
+ xss.href = href
293
+ xss.type = type
294
+ xss.title = title
295
+ xss.media = media
296
+ xss.charset = charset
297
+ xss.alternate = alternate
298
+ end
299
+
300
+ setup_dummy_channel_atom(maker)
301
+ setup_dummy_item_atom(maker)
302
+ end
303
+ assert_not_nil(feed)
304
+
305
+ new_feed = RSS::Maker.make("atom:entry") do |maker|
306
+ feed.setup_maker(maker)
307
+ end
308
+
309
+ assert_equal(["atom", "1.0", "entry"], new_feed.feed_info)
310
+ assert_equal(encoding, new_feed.encoding)
311
+ assert_equal(standalone, new_feed.standalone)
312
+
313
+ xss = new_feed.xml_stylesheets.first
314
+ assert_equal(1, new_feed.xml_stylesheets.size)
315
+ assert_equal(href, xss.href)
316
+ assert_equal(type, xss.type)
317
+ assert_equal(title, xss.title)
318
+ assert_equal(media, xss.media)
319
+ assert_equal(charset, xss.charset)
320
+ assert_equal(alternate, xss.alternate)
321
+ end
322
+
323
+ def test_setup_maker_full
324
+ encoding = "EUC-JP"
325
+ standalone = true
326
+
327
+ href = 'a.xsl'
328
+ type = 'text/xsl'
329
+ title = 'sample'
330
+ media = 'printer'
331
+ charset = 'UTF-8'
332
+ alternate = 'yes'
333
+
334
+ channel_about = "http://hoge.com"
335
+ channel_title = "fugafuga"
336
+ channel_link = "http://hoge.com"
337
+ channel_description = "fugafugafugafuga"
338
+ channel_author = "Bob"
339
+
340
+ image_url = "http://hoge.com/hoge.png"
341
+
342
+ item_title = "TITLE"
343
+ item_link = "http://hoge.com/"
344
+ item_description = "text hoge fuga"
345
+
346
+ entry_size = 5
347
+ feed = RSS::Maker.make("atom:entry") do |maker|
348
+ maker.encoding = encoding
349
+ maker.standalone = standalone
350
+
351
+ maker.xml_stylesheets.new_xml_stylesheet do |xss|
352
+ xss.href = href
353
+ xss.type = type
354
+ xss.title = title
355
+ xss.media = media
356
+ xss.charset = charset
357
+ xss.alternate = alternate
358
+ end
359
+
360
+ maker.channel.about = channel_about
361
+ maker.channel.title = channel_title
362
+ maker.channel.link = channel_link
363
+ maker.channel.description = channel_description
364
+ maker.channel.author = channel_author
365
+ @dc_elems.each do |var, value|
366
+ maker.channel.__send__("dc_#{var}=", value)
367
+ end
368
+
369
+ maker.image.url = image_url
370
+
371
+ entry_size.times do |i|
372
+ maker.items.new_item do |item|
373
+ item.title = "#{item_title}#{i}"
374
+ item.link = "#{item_link}#{i}"
375
+ item.description = "#{item_description}#{i}"
376
+
377
+ @dc_elems.each do |var, value|
378
+ item.__send__("dc_#{var}=", value)
379
+ end
380
+ end
381
+ end
382
+ end
383
+
384
+ new_feed = RSS::Maker.make("atom:entry") do |maker|
385
+ feed.setup_maker(maker)
386
+ end
387
+
388
+ assert_equal(["atom", "1.0", "entry"], new_feed.feed_info)
389
+ assert_equal(encoding, new_feed.encoding)
390
+ assert_equal(standalone, new_feed.standalone)
391
+
392
+ xss = new_feed.xml_stylesheets.first
393
+ assert_equal(1, new_feed.xml_stylesheets.size)
394
+ assert_equal(href, xss.href)
395
+ assert_equal(type, xss.type)
396
+ assert_equal(title, xss.title)
397
+ assert_equal(media, xss.media)
398
+ assert_equal(charset, xss.charset)
399
+ assert_equal(alternate, xss.alternate)
400
+
401
+ assert_equal("#{item_title}0", new_feed.title.content)
402
+ assert_equal("#{item_link}0", new_feed.link.href)
403
+ assert_equal("#{item_description}0", new_feed.summary.content)
404
+ @dc_elems.each do |var, value|
405
+ assert_equal(value, new_feed.__send__("dc_#{var}"))
406
+ end
407
+ assert_equal(1, new_feed.items.size)
408
+ end
409
+ end
410
+ end