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