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