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,393 @@
1
+ require "rss-testcase"
2
+
3
+ require "rss/maker"
4
+
5
+ module RSS
6
+ class TestMakerAtomEntry < TestCase
7
+ def test_supported?
8
+ assert(RSS::Maker.supported?("atom:entry"))
9
+ assert(RSS::Maker.supported?("atom1.0:entry"))
10
+ assert(!RSS::Maker.supported?("atom2.0:entry"))
11
+ end
12
+
13
+ def test_find_class
14
+ assert_equal(RSS::Maker::Atom::Entry, RSS::Maker["atom:entry"])
15
+ assert_equal(RSS::Maker::Atom::Entry, RSS::Maker["atom1.0:entry"])
16
+ end
17
+
18
+ def test_root_element
19
+ entry = Maker.make("atom:entry") do |maker|
20
+ setup_dummy_channel_atom(maker)
21
+ setup_dummy_item_atom(maker)
22
+ end
23
+ assert_equal(["atom", "1.0", "entry"], entry.feed_info)
24
+
25
+ entry = Maker.make("atom:entry") do |maker|
26
+ setup_dummy_channel_atom(maker)
27
+ setup_dummy_item_atom(maker)
28
+ maker.encoding = "EUC-JP"
29
+ end
30
+ assert_equal(["atom", "1.0", "entry"], entry.feed_info)
31
+ assert_equal("EUC-JP", entry.encoding)
32
+
33
+ entry = Maker.make("atom:entry") do |maker|
34
+ setup_dummy_channel_atom(maker)
35
+ setup_dummy_item_atom(maker)
36
+ maker.standalone = "yes"
37
+ end
38
+ assert_equal(["atom", "1.0", "entry"], entry.feed_info)
39
+ assert_equal("yes", entry.standalone)
40
+
41
+ entry = Maker.make("atom:entry") do |maker|
42
+ setup_dummy_channel_atom(maker)
43
+ setup_dummy_item_atom(maker)
44
+ maker.encoding = "EUC-JP"
45
+ maker.standalone = "yes"
46
+ end
47
+ assert_equal(["atom", "1.0", "entry"], entry.feed_info)
48
+ assert_equal("EUC-JP", entry.encoding)
49
+ assert_equal("yes", entry.standalone)
50
+ end
51
+
52
+ def test_invalid_feed
53
+ assert_not_set_error("maker.item", %w(id title author updated)) do
54
+ Maker.make("atom:entry") do |maker|
55
+ end
56
+ end
57
+
58
+ assert_not_set_error("maker.item", %w(id title updated)) do
59
+ Maker.make("atom:entry") do |maker|
60
+ maker.channel.author = "foo"
61
+ end
62
+ end
63
+
64
+ assert_not_set_error("maker.item", %w(title updated)) do
65
+ Maker.make("atom:entry") do |maker|
66
+ maker.channel.author = "foo"
67
+ maker.channel.id = "http://example.com"
68
+ end
69
+ end
70
+
71
+ assert_not_set_error("maker.item", %w(updated)) do
72
+ Maker.make("atom:entry") do |maker|
73
+ maker.channel.author = "foo"
74
+ maker.channel.id = "http://example.com"
75
+ maker.channel.title = "Atom Feed"
76
+ end
77
+ end
78
+
79
+ assert_not_set_error("maker.item", %w(author)) do
80
+ Maker.make("atom:entry") do |maker|
81
+ maker.channel.id = "http://example.com"
82
+ maker.channel.title = "Atom Feed"
83
+ maker.channel.updated = Time.now
84
+ end
85
+ end
86
+
87
+ entry = Maker.make("atom:entry") do |maker|
88
+ maker.channel.author = "Foo"
89
+ maker.channel.id = "http://example.com"
90
+ maker.channel.title = "Atom Feed"
91
+ maker.channel.updated = Time.now
92
+ end
93
+ assert_not_nil(entry)
94
+ end
95
+
96
+ def test_author
97
+ assert_maker_atom_persons("entry",
98
+ ["channel", "authors"],
99
+ ["authors"],
100
+ "maker.channel.author") do |maker|
101
+ setup_dummy_channel_atom(maker)
102
+ setup_dummy_item_atom(maker)
103
+ end
104
+
105
+ assert_maker_atom_persons("entry",
106
+ ["items", "first", "authors"],
107
+ ["authors"],
108
+ "maker.item.author",
109
+ "maker.item", ["author"]) do |maker|
110
+ setup_dummy_channel_atom(maker)
111
+ setup_dummy_item_atom(maker)
112
+ maker.channel.authors.clear
113
+ maker.items.first.authors.clear
114
+ end
115
+
116
+ assert_maker_atom_persons("entry",
117
+ ["items", "first", "source", "authors"],
118
+ ["source", "authors"],
119
+ "maker.item.source.author") do |maker|
120
+ setup_dummy_channel_atom(maker)
121
+ setup_dummy_item_atom(maker)
122
+ end
123
+ end
124
+
125
+ def test_category
126
+ assert_maker_atom_categories("entry",
127
+ ["channel", "categories"],
128
+ ["categories"],
129
+ "maker.channel.category") do |maker|
130
+ setup_dummy_channel_atom(maker)
131
+ setup_dummy_item_atom(maker)
132
+ end
133
+
134
+ assert_maker_atom_categories("entry",
135
+ ["items", "first", "categories"],
136
+ ["categories"],
137
+ "maker.item.category") do |maker|
138
+ setup_dummy_channel_atom(maker)
139
+ setup_dummy_item_atom(maker)
140
+ end
141
+
142
+ assert_maker_atom_categories("entry",
143
+ ["items", "first", "source", "categories"],
144
+ ["source", "categories"],
145
+ "maker.item.source.category") do |maker|
146
+ setup_dummy_channel_atom(maker)
147
+ setup_dummy_item_atom(maker)
148
+ end
149
+ end
150
+
151
+ def test_content
152
+ assert_maker_atom_content("entry",
153
+ ["items", "first", "content"],
154
+ ["content"],
155
+ "maker.item.content") do |maker|
156
+ setup_dummy_channel_atom(maker)
157
+ setup_dummy_item_atom(maker)
158
+ end
159
+ end
160
+
161
+ def test_contributor
162
+ assert_maker_atom_persons("entry",
163
+ ["channel", "contributors"],
164
+ ["contributors"],
165
+ "maker.channel.contributor") do |maker|
166
+ setup_dummy_channel_atom(maker)
167
+ setup_dummy_item_atom(maker)
168
+ end
169
+
170
+ assert_maker_atom_persons("entry",
171
+ ["items", "first", "contributors"],
172
+ ["contributors"],
173
+ "maker.item.contributor") do |maker|
174
+ setup_dummy_channel_atom(maker)
175
+ setup_dummy_item_atom(maker)
176
+ end
177
+
178
+ assert_maker_atom_persons("entry",
179
+ ["items", "first", "source", "contributors"],
180
+ ["source", "contributors"],
181
+ "maker.item.source.contributor") do |maker|
182
+ setup_dummy_channel_atom(maker)
183
+ setup_dummy_item_atom(maker)
184
+ end
185
+ end
186
+
187
+ def test_link
188
+ assert_maker_atom_links("entry",
189
+ ["channel", "links"],
190
+ ["links"],
191
+ "maker.channel.link") do |maker|
192
+ setup_dummy_channel_atom(maker)
193
+ setup_dummy_item_atom(maker)
194
+ maker.channel.links.clear
195
+ maker.items.first.links.clear
196
+ end
197
+
198
+ assert_maker_atom_links("entry",
199
+ ["items", "first", "links"],
200
+ ["links"],
201
+ "maker.item.link") do |maker|
202
+ setup_dummy_channel_atom(maker)
203
+ setup_dummy_item_atom(maker)
204
+ maker.channel.links.clear
205
+ maker.items.first.links.clear
206
+ end
207
+
208
+ assert_maker_atom_links("entry",
209
+ ["items", "first", "source", "links"],
210
+ ["source", "links"],
211
+ "maker.item.source.link", true) do |maker|
212
+ setup_dummy_channel_atom(maker)
213
+ setup_dummy_item_atom(maker)
214
+ end
215
+ end
216
+
217
+ def test_published
218
+ assert_maker_atom_date_construct("entry",
219
+ ["items", "first", "published"],
220
+ ["published"]
221
+ ) do |maker|
222
+ setup_dummy_channel_atom(maker)
223
+ setup_dummy_item_atom(maker)
224
+ end
225
+ end
226
+
227
+ def test_rights
228
+ assert_maker_atom_text_construct("entry",
229
+ ["channel", "copyright"],
230
+ ["rights"]) do |maker|
231
+ setup_dummy_channel_atom(maker)
232
+ setup_dummy_item_atom(maker)
233
+ end
234
+
235
+ assert_maker_atom_text_construct("entry",
236
+ ["items", "first", "rights"],
237
+ ["rights"],
238
+ nil, nil, "maker.item.rights"
239
+ ) do |maker|
240
+ setup_dummy_channel_atom(maker)
241
+ setup_dummy_item_atom(maker)
242
+ end
243
+
244
+ assert_maker_atom_text_construct("entry",
245
+ ["items", "first", "source", "rights"],
246
+ ["source", "rights"],
247
+ nil, nil, "maker.item.source.rights"
248
+ ) do |maker|
249
+ setup_dummy_channel_atom(maker)
250
+ setup_dummy_item_atom(maker)
251
+ end
252
+ end
253
+
254
+
255
+ def test_source_generator
256
+ assert_maker_atom_generator("entry",
257
+ ["items", "first", "source", "generator"],
258
+ ["source", "generator"],
259
+ "maker.item.source.generator") do |maker|
260
+ setup_dummy_channel_atom(maker)
261
+ setup_dummy_item_atom(maker)
262
+ end
263
+ end
264
+
265
+ def test_source_icon
266
+ assert_maker_atom_icon("entry",
267
+ ["items", "first", "source", "icon"],
268
+ ["source", "icon"],
269
+ nil, "maker.item.source.icon") do |maker|
270
+ setup_dummy_channel_atom(maker)
271
+ setup_dummy_item_atom(maker)
272
+ end
273
+ end
274
+
275
+ def test_source_id
276
+ assert_maker_atom_id("entry",
277
+ ["items", "first", "source"],
278
+ ["source"],
279
+ "maker.item.source") do |maker|
280
+ setup_dummy_channel_atom(maker)
281
+ setup_dummy_item_atom(maker)
282
+ end
283
+ end
284
+
285
+ def test_source_logo
286
+ assert_maker_atom_logo("entry",
287
+ ["items", "first", "source", "logo"],
288
+ ["source", "logo"],
289
+ nil,
290
+ "maker.item.source.logo") do |maker|
291
+ setup_dummy_channel_atom(maker)
292
+ setup_dummy_item_atom(maker)
293
+ end
294
+ end
295
+
296
+ def test_source_subtitle
297
+ assert_maker_atom_text_construct("entry",
298
+ ["items", "first", "source", "subtitle"],
299
+ ["source", "subtitle"],
300
+ nil, nil,
301
+ "maker.item.source.subtitle") do |maker|
302
+ setup_dummy_channel_atom(maker)
303
+ setup_dummy_item_atom(maker)
304
+ end
305
+ end
306
+
307
+ def test_summary
308
+ assert_maker_atom_text_construct("entry",
309
+ ["items", "first", "description"],
310
+ ["summary"],
311
+ nil, nil, "maker.item.description"
312
+ ) do |maker|
313
+ setup_dummy_channel_atom(maker)
314
+ setup_dummy_item_atom(maker)
315
+ end
316
+ end
317
+
318
+ def test_title
319
+ assert_maker_atom_text_construct("entry",
320
+ ["channel", "title"], ["title"],
321
+ "maker.item", ["title"],
322
+ "maker.channel.title") do |maker|
323
+ setup_dummy_channel_atom(maker)
324
+ setup_dummy_item_atom(maker)
325
+ maker.channel.title = nil
326
+ maker.items.first.title = nil
327
+ end
328
+
329
+ assert_maker_atom_text_construct("entry",
330
+ ["items", "first", "title"],
331
+ ["title"],
332
+ "maker.item", ["title"],
333
+ "maker.item.title") do |maker|
334
+ setup_dummy_channel_atom(maker)
335
+ setup_dummy_item_atom(maker)
336
+ maker.channel.title = nil
337
+ maker.items.first.title = nil
338
+ end
339
+
340
+ assert_maker_atom_text_construct("entry",
341
+ ["items", "first", "source", "title"],
342
+ ["source", "title"],
343
+ nil, nil, "maker.item.source.title"
344
+ ) do |maker|
345
+ setup_dummy_channel_atom(maker)
346
+ setup_dummy_item_atom(maker)
347
+ end
348
+ end
349
+
350
+ def test_updated
351
+ assert_maker_atom_date_construct("entry",
352
+ ["channel", "updated"], ["updated"],
353
+ "maker.item", ["updated"]) do |maker|
354
+ setup_dummy_channel_atom(maker)
355
+ setup_dummy_item_atom(maker)
356
+ maker.channel.updated = nil
357
+ maker.items.first.updated = nil
358
+ end
359
+
360
+ assert_maker_atom_date_construct("entry",
361
+ ["items", "first", "updated"],
362
+ ["updated"],
363
+ "maker.item", ["updated"]) do |maker|
364
+ setup_dummy_channel_atom(maker)
365
+ setup_dummy_item_atom(maker)
366
+ maker.channel.updated = nil
367
+ maker.items.first.updated = nil
368
+ end
369
+
370
+ assert_maker_atom_date_construct("entry",
371
+ ["items", "first", "source", "updated"],
372
+ ["source", "updated"]) do |maker|
373
+ setup_dummy_channel_atom(maker)
374
+ setup_dummy_item_atom(maker)
375
+ end
376
+ end
377
+
378
+ def test_date
379
+ date = Time.parse("2004/11/1 10:10")
380
+ feed = Maker.make("atom:entry") do |maker|
381
+ setup_dummy_channel_atom(maker)
382
+ maker.channel.date = nil
383
+ maker.items.new_item do |item|
384
+ item.link = "http://example.com/article.html"
385
+ item.title = "Sample Article"
386
+ item.date = date
387
+ end
388
+ end
389
+ assert_equal(date, feed.items[0].updated.content)
390
+ assert_equal([date], feed.items[0].dc_dates.collect {|_date| _date.value})
391
+ end
392
+ end
393
+ end
@@ -0,0 +1,454 @@
1
+ require "rss-testcase"
2
+
3
+ require "rss/maker"
4
+
5
+ module RSS
6
+ class TestMakerAtomFeed < TestCase
7
+ def test_supported?
8
+ assert(RSS::Maker.supported?("atom"))
9
+ assert(RSS::Maker.supported?("atom:feed"))
10
+ assert(RSS::Maker.supported?("atom1.0"))
11
+ assert(RSS::Maker.supported?("atom1.0:feed"))
12
+ assert(!RSS::Maker.supported?("atom2.0"))
13
+ assert(!RSS::Maker.supported?("atom2.0:feed"))
14
+ end
15
+
16
+ def test_find_class
17
+ assert_equal(RSS::Maker::Atom::Feed, RSS::Maker["atom"])
18
+ assert_equal(RSS::Maker::Atom::Feed, RSS::Maker["atom:feed"])
19
+ assert_equal(RSS::Maker::Atom::Feed, RSS::Maker["atom1.0"])
20
+ assert_equal(RSS::Maker::Atom::Feed, RSS::Maker["atom1.0:feed"])
21
+ end
22
+
23
+ def test_root_element
24
+ feed = Maker.make("atom") do |maker|
25
+ setup_dummy_channel_atom(maker)
26
+ end
27
+ assert_equal(["atom", "1.0", "feed"], feed.feed_info)
28
+
29
+ feed = Maker.make("atom") do |maker|
30
+ setup_dummy_channel_atom(maker)
31
+ maker.encoding = "EUC-JP"
32
+ end
33
+ assert_equal(["atom", "1.0", "feed"], feed.feed_info)
34
+ assert_equal("EUC-JP", feed.encoding)
35
+
36
+ feed = Maker.make("atom") do |maker|
37
+ setup_dummy_channel_atom(maker)
38
+ maker.standalone = "yes"
39
+ end
40
+ assert_equal(["atom", "1.0", "feed"], feed.feed_info)
41
+ assert_equal("yes", feed.standalone)
42
+
43
+ feed = Maker.make("atom") do |maker|
44
+ setup_dummy_channel_atom(maker)
45
+ maker.encoding = "EUC-JP"
46
+ maker.standalone = "yes"
47
+ end
48
+ assert_equal(["atom", "1.0", "feed"], feed.feed_info)
49
+ assert_equal("EUC-JP", feed.encoding)
50
+ assert_equal("yes", feed.standalone)
51
+ end
52
+
53
+ def test_invalid_feed
54
+ assert_not_set_error("maker.channel", %w(id title author updated)) do
55
+ Maker.make("atom") do |maker|
56
+ end
57
+ end
58
+
59
+ assert_not_set_error("maker.channel", %w(id title updated)) do
60
+ Maker.make("atom") do |maker|
61
+ maker.channel.author = "foo"
62
+ end
63
+ end
64
+
65
+ assert_not_set_error("maker.channel", %w(title updated)) do
66
+ Maker.make("atom") do |maker|
67
+ maker.channel.author = "foo"
68
+ maker.channel.id = "http://example.com"
69
+ end
70
+ end
71
+
72
+ assert_not_set_error("maker.channel", %w(updated)) do
73
+ Maker.make("atom") do |maker|
74
+ maker.channel.author = "foo"
75
+ maker.channel.id = "http://example.com"
76
+ maker.channel.title = "Atom Feed"
77
+ end
78
+ end
79
+
80
+ assert_not_set_error("maker.channel", %w(author)) do
81
+ Maker.make("atom") do |maker|
82
+ maker.channel.id = "http://example.com"
83
+ maker.channel.title = "Atom Feed"
84
+ maker.channel.updated = Time.now
85
+ end
86
+ end
87
+
88
+ feed = Maker.make("atom") do |maker|
89
+ maker.channel.author = "Foo"
90
+ maker.channel.id = "http://example.com"
91
+ maker.channel.title = "Atom Feed"
92
+ maker.channel.updated = Time.now
93
+ end
94
+ assert_not_nil(feed)
95
+ end
96
+
97
+ def test_author
98
+ assert_maker_atom_persons("feed",
99
+ ["channel", "authors"],
100
+ ["authors"],
101
+ "maker.channel.author") do |maker|
102
+ setup_dummy_channel_atom(maker)
103
+ end
104
+
105
+ assert_not_set_error("maker.channel", %w(author)) do
106
+ RSS::Maker.make("atom") do |maker|
107
+ setup_dummy_channel_atom(maker)
108
+ setup_dummy_item_atom(maker)
109
+ maker.channel.authors.clear
110
+ end
111
+ end
112
+
113
+ assert_maker_atom_persons("feed",
114
+ ["items", "first", "authors"],
115
+ ["entries", "first", "authors"],
116
+ "maker.item.author") do |maker|
117
+ setup_dummy_channel_atom(maker)
118
+ setup_dummy_item_atom(maker)
119
+ end
120
+
121
+ assert_maker_atom_persons("feed",
122
+ ["items", "first", "source", "authors"],
123
+ ["entries", "first", "source", "authors"],
124
+ "maker.item.source.author") do |maker|
125
+ setup_dummy_channel_atom(maker)
126
+ setup_dummy_item_atom(maker)
127
+ end
128
+ end
129
+
130
+ def test_category
131
+ assert_maker_atom_categories("feed",
132
+ ["channel", "categories"],
133
+ ["categories"],
134
+ "maker.channel.category") do |maker|
135
+ setup_dummy_channel_atom(maker)
136
+ end
137
+
138
+ assert_maker_atom_categories("feed",
139
+ ["items", "first", "categories"],
140
+ ["entries", "first", "categories"],
141
+ "maker.item.category") do |maker|
142
+ setup_dummy_channel_atom(maker)
143
+ setup_dummy_item_atom(maker)
144
+ end
145
+
146
+ assert_maker_atom_categories("feed",
147
+ ["items", "first", "source", "categories"],
148
+ ["entries", "first", "source", "categories"],
149
+ "maker.item.source.category") do |maker|
150
+ setup_dummy_channel_atom(maker)
151
+ setup_dummy_item_atom(maker)
152
+ end
153
+ end
154
+
155
+ def test_contributor
156
+ assert_maker_atom_persons("feed",
157
+ ["channel", "contributors"],
158
+ ["contributors"],
159
+ "maker.channel.contributor") do |maker|
160
+ setup_dummy_channel_atom(maker)
161
+ end
162
+
163
+ assert_maker_atom_persons("feed",
164
+ ["items", "first", "contributors"],
165
+ ["entries", "first", "contributors"],
166
+ "maker.item.contributor") do |maker|
167
+ setup_dummy_channel_atom(maker)
168
+ setup_dummy_item_atom(maker)
169
+ end
170
+
171
+ assert_maker_atom_persons("feed",
172
+ ["items", "first", "source", "contributors"],
173
+ ["entries", "first", "source", "contributors"],
174
+ "maker.item.source.contributor") do |maker|
175
+ setup_dummy_channel_atom(maker)
176
+ setup_dummy_item_atom(maker)
177
+ end
178
+ end
179
+
180
+ def test_generator
181
+ assert_maker_atom_generator("feed",
182
+ ["channel", "generator"],
183
+ ["generator"]) do |maker|
184
+ setup_dummy_channel_atom(maker)
185
+ setup_dummy_item_atom(maker)
186
+ end
187
+
188
+ assert_maker_atom_generator("feed",
189
+ ["items", "first", "source", "generator"],
190
+ ["entries", "first", "source", "generator"],
191
+ "maker.item.source.generator") do |maker|
192
+ setup_dummy_channel_atom(maker)
193
+ setup_dummy_item_atom(maker)
194
+ end
195
+ end
196
+
197
+ def test_icon
198
+ assert_maker_atom_icon("feed", ["channel"], ["icon"], "icon") do |maker|
199
+ setup_dummy_channel_atom(maker)
200
+ end
201
+
202
+ assert_maker_atom_icon("feed",
203
+ ["items", "first", "source", "icon"],
204
+ ["entries", "first", "source", "icon"],
205
+ nil, "maker.item.source.icon") do |maker|
206
+ setup_dummy_channel_atom(maker)
207
+ setup_dummy_item_atom(maker)
208
+ end
209
+ end
210
+
211
+ def test_link
212
+ assert_maker_atom_links("feed",
213
+ ["channel", "links"],
214
+ ["links"],
215
+ "maker.channel.link") do |maker|
216
+ setup_dummy_channel_atom(maker)
217
+ end
218
+
219
+ assert_maker_atom_links("feed",
220
+ ["items", "first", "links"],
221
+ ["entries", "first", "links"],
222
+ "maker.item.link") do |maker|
223
+ setup_dummy_channel_atom(maker)
224
+ setup_dummy_item_atom(maker)
225
+ end
226
+
227
+ assert_maker_atom_links("feed",
228
+ ["items", "first", "source", "links"],
229
+ ["entries", "first", "source", "links"],
230
+ "maker.item.source.link", true) do |maker|
231
+ setup_dummy_channel_atom(maker)
232
+ setup_dummy_item_atom(maker)
233
+ end
234
+ end
235
+
236
+ def test_logo
237
+ assert_maker_atom_logo("feed", ["channel"], ["logo"], "logo") do |maker|
238
+ setup_dummy_channel_atom(maker)
239
+ end
240
+
241
+ assert_maker_atom_logo("feed", ["image"], ["logo"], "url") do |maker|
242
+ setup_dummy_channel_atom(maker)
243
+ end
244
+
245
+ assert_maker_atom_logo("feed",
246
+ ["items", "first", "source", "logo"],
247
+ ["entries", "first", "source", "logo"],
248
+ nil, "maker.item.source.logo") do |maker|
249
+ setup_dummy_channel_atom(maker)
250
+ setup_dummy_item_atom(maker)
251
+ end
252
+ end
253
+
254
+ def test_rights
255
+ assert_maker_atom_text_construct("feed",
256
+ ["channel", "copyright"],
257
+ ["rights"]) do |maker|
258
+ setup_dummy_channel_atom(maker)
259
+ end
260
+
261
+ assert_maker_atom_text_construct("feed",
262
+ ["items", "first", "rights"],
263
+ ["entries", "first", "rights"],
264
+ nil, nil, "maker.item.rights"
265
+ ) do |maker|
266
+ setup_dummy_channel_atom(maker)
267
+ setup_dummy_item_atom(maker)
268
+ end
269
+
270
+ assert_maker_atom_text_construct("feed",
271
+ ["items", "first", "source", "rights"],
272
+ ["entries", "first", "source", "rights"],
273
+ nil, nil, "maker.item.source.rights"
274
+ ) do |maker|
275
+ setup_dummy_channel_atom(maker)
276
+ setup_dummy_item_atom(maker)
277
+ end
278
+ end
279
+
280
+ def test_subtitle
281
+ assert_maker_atom_text_construct("feed",
282
+ ["channel", "subtitle"],
283
+ ["subtitle"],
284
+ nil, nil,
285
+ "maker.channel.description") do |maker|
286
+ setup_dummy_channel_atom(maker)
287
+ maker.channel.description = nil
288
+ end
289
+
290
+ assert_maker_atom_text_construct("feed",
291
+ ["channel", "subtitle"],
292
+ ["subtitle"],
293
+ nil, nil,
294
+ "maker.channel.description") do |maker|
295
+ setup_dummy_channel_atom(maker)
296
+ maker.channel.description {|d| d.content = nil}
297
+ end
298
+
299
+ assert_maker_atom_text_construct("feed",
300
+ ["items", "first", "source", "subtitle"],
301
+ ["entries", "first",
302
+ "source", "subtitle"],
303
+ nil, nil,
304
+ "maker.item.source.subtitle") do |maker|
305
+ setup_dummy_channel_atom(maker)
306
+ setup_dummy_item_atom(maker)
307
+ end
308
+ end
309
+
310
+ def test_title
311
+ assert_maker_atom_text_construct("feed",
312
+ ["channel", "title"], ["title"],
313
+ "maker.channel", ["title"]) do |maker|
314
+ setup_dummy_channel_atom(maker)
315
+ maker.channel.title = nil
316
+ end
317
+
318
+ assert_maker_atom_text_construct("feed",
319
+ ["items", "first", "title"],
320
+ ["entries", "first", "title"],
321
+ "maker.item", ["title"],
322
+ "maker.item.title") do |maker|
323
+ setup_dummy_channel_atom(maker)
324
+ setup_dummy_item_atom(maker)
325
+ maker.items.first.title = nil
326
+ end
327
+
328
+ assert_maker_atom_text_construct("feed",
329
+ ["items", "first", "source", "title"],
330
+ ["entries", "first", "source", "title"],
331
+ nil, nil, "maker.item.source.title"
332
+ ) do |maker|
333
+ setup_dummy_channel_atom(maker)
334
+ setup_dummy_item_atom(maker)
335
+ end
336
+ end
337
+
338
+ def test_updated
339
+ assert_maker_atom_date_construct("feed",
340
+ ["channel", "updated"], ["updated"],
341
+ "maker.channel", ["updated"]) do |maker|
342
+ setup_dummy_channel_atom(maker)
343
+ maker.channel.updated = nil
344
+ end
345
+
346
+ assert_maker_atom_date_construct("feed",
347
+ ["items", "first", "updated"],
348
+ ["entries", "first", "updated"],
349
+ "maker.item", ["updated"]) do |maker|
350
+ setup_dummy_channel_atom(maker)
351
+ setup_dummy_item_atom(maker)
352
+ maker.items.first.updated = nil
353
+ end
354
+
355
+ assert_maker_atom_date_construct("feed",
356
+ ["items", "first", "source", "updated"],
357
+ ["entries", "first", "source", "updated"]
358
+ ) do |maker|
359
+ setup_dummy_channel_atom(maker)
360
+ setup_dummy_item_atom(maker)
361
+ end
362
+ end
363
+
364
+ def test_published
365
+ assert_maker_atom_date_construct("feed",
366
+ ["items", "first", "published"],
367
+ ["entries", "first", "published"]
368
+ ) do |maker|
369
+ setup_dummy_channel_atom(maker)
370
+ setup_dummy_item_atom(maker)
371
+ end
372
+ end
373
+
374
+ def test_summary
375
+ assert_maker_atom_text_construct("feed",
376
+ ["items", "first", "description"],
377
+ ["entries", "first", "summary"],
378
+ nil, nil, "maker.item.description"
379
+ ) do |maker|
380
+ setup_dummy_channel_atom(maker)
381
+ setup_dummy_item_atom(maker)
382
+ end
383
+ end
384
+
385
+ def test_content
386
+ assert_maker_atom_content("feed",
387
+ ["items", "first", "content"],
388
+ ["entries", "first", "content"],
389
+ "maker.item.content") do |maker|
390
+ setup_dummy_channel_atom(maker)
391
+ setup_dummy_item_atom(maker)
392
+ end
393
+ end
394
+
395
+ def test_id
396
+ assert_maker_atom_id("feed",
397
+ ["items", "first", "source"],
398
+ ["entries", "first", "source"],
399
+ "maker.item.source") do |maker|
400
+ setup_dummy_channel_atom(maker)
401
+ setup_dummy_item_atom(maker)
402
+ end
403
+ end
404
+
405
+ def test_language
406
+ language = "ja"
407
+ feed = Maker.make("atom") do |maker|
408
+ setup_dummy_channel_atom(maker)
409
+ maker.channel.language = "ja"
410
+ end
411
+ assert_equal(language, feed.dc_language)
412
+ end
413
+
414
+ def test_date
415
+ date = Time.parse("2004/11/1 10:10")
416
+ feed = Maker.make("atom") do |maker|
417
+ setup_dummy_channel_atom(maker)
418
+ maker.items.new_item do |item|
419
+ item.link = "http://example.com/article.html"
420
+ item.title = "sample article"
421
+ item.date = date
422
+ end
423
+ end
424
+ assert_equal(date, feed.items[0].updated.content)
425
+ assert_equal([date], feed.items[0].dc_dates.collect {|_date| _date.value})
426
+ end
427
+
428
+ def test_channel_dc_date
429
+ date = Time.parse("2004/11/1 10:10")
430
+ feed = Maker.make("atom") do |maker|
431
+ setup_dummy_channel_atom(maker)
432
+ maker.channel.updated = nil
433
+ maker.channel.dc_date = date
434
+ setup_dummy_item_atom(maker)
435
+ end
436
+ assert_equal(date, feed.updated.content)
437
+ assert_equal([date], feed.dc_dates.collect {|_date| _date.value})
438
+ end
439
+
440
+ def test_item_dc_date
441
+ date = Time.parse("2004/11/1 10:10")
442
+ feed = Maker.make("atom") do |maker|
443
+ setup_dummy_channel_atom(maker)
444
+ maker.items.new_item do |item|
445
+ item.link = "http://example.com/article.html"
446
+ item.title = "sample article"
447
+ item.dc_date = date
448
+ end
449
+ end
450
+ assert_equal(date, feed.items[0].updated.content)
451
+ assert_equal([date], feed.items[0].dc_dates.collect {|_date| _date.value})
452
+ end
453
+ end
454
+ end