rss 0.2.8 → 0.2.9

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