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