rss 0.2.8 → 0.2.9

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