6
class TestMakerITunes < TestCase
8
assert_maker_itunes_author(%w(channel))
9
assert_maker_itunes_author(%w(items last))
13
assert_maker_itunes_block(%w(channel))
14
assert_maker_itunes_block(%w(items last))
18
assert_maker_itunes_category(%w(channel))
22
assert_maker_itunes_image(%w(channel))
26
assert_maker_itunes_duration(%w(items last))
30
assert_maker_itunes_explicit(%w(channel))
31
assert_maker_itunes_explicit(%w(items last))
35
assert_maker_itunes_keywords(%w(channel))
36
assert_maker_itunes_keywords(%w(items last))
40
assert_maker_itunes_new_feed_url(%w(channel))
44
assert_maker_itunes_owner(%w(channel))
48
assert_maker_itunes_subtitle(%w(channel))
49
assert_maker_itunes_subtitle(%w(items last))
53
assert_maker_itunes_summary(%w(channel))
54
assert_maker_itunes_summary(%w(items last))
59
def assert_maker_itunes_author(maker_readers, feed_readers=nil)
61
feed_readers ||= maker_readers
63
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
64
setup_dummy_channel(maker)
65
setup_dummy_item(maker)
67
target = chain_reader(maker, maker_readers)
68
target.itunes_author = author
70
target = chain_reader(rss20, feed_readers)
71
assert_equal(author, target.itunes_author)
75
def _assert_maker_itunes_block(value, boolean_value, maker_readers,
77
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
78
setup_dummy_channel(maker)
79
setup_dummy_item(maker)
81
target = chain_reader(maker, maker_readers)
82
target.itunes_block = value
83
assert_equal(value, target.itunes_block)
84
assert_equal(boolean_value, target.itunes_block?)
86
target = chain_reader(rss20, feed_readers)
87
if [true, false].include?(value)
88
feed_expected_value = value = value ? "yes" : "no"
90
feed_expected_value = value
92
assert_equal(value, target.itunes_block)
93
assert_equal(boolean_value, target.itunes_block?)
96
def assert_maker_itunes_block(maker_readers, feed_readers=nil)
98
feed_readers ||= maker_readers
99
_assert_maker_itunes_block("yes", true, maker_readers, feed_readers)
100
_assert_maker_itunes_block("Yes", true, maker_readers, feed_readers)
101
_assert_maker_itunes_block("no", false, maker_readers, feed_readers)
102
_assert_maker_itunes_block("", false, maker_readers, feed_readers)
103
_assert_maker_itunes_block(true, true, maker_readers, feed_readers)
104
_assert_maker_itunes_block(false, false, maker_readers, feed_readers)
105
_assert_maker_itunes_block(nil, false, maker_readers, feed_readers)
109
def _assert_maker_itunes_category(categories, maker_readers, feed_readers)
110
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
111
setup_dummy_channel(maker)
112
setup_dummy_item(maker)
114
target = chain_reader(maker, maker_readers)
115
categories.each do |category|
116
sub_target = target.itunes_categories
117
if category.is_a?(Array)
118
category.each do |sub_category|
119
sub_target = sub_target.new_category
120
sub_target.text = sub_category
123
sub_target.new_category.text = category
128
target = chain_reader(rss20, feed_readers)
129
actual_categories = target.itunes_categories.collect do |category|
131
if category.itunes_categories.empty?
134
[cat, *category.itunes_categories.collect {|c| c.text}]
137
assert_equal(categories, actual_categories)
140
def assert_maker_itunes_category(maker_readers, feed_readers=nil)
142
feed_readers ||= maker_readers
143
_assert_maker_itunes_category(["Audio Blogs"],
144
maker_readers, feed_readers)
145
_assert_maker_itunes_category([["Arts & Entertainment", "Games"]],
146
maker_readers, feed_readers)
147
_assert_maker_itunes_category([["Arts & Entertainment", "Games"],
148
["Technology", "Computers"],
150
maker_readers, feed_readers)
154
def assert_maker_itunes_image(maker_readers, feed_readers=nil)
156
feed_readers ||= maker_readers
157
url = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
159
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
160
setup_dummy_channel(maker)
161
setup_dummy_item(maker)
163
target = chain_reader(maker, maker_readers)
164
target.itunes_image = url
167
target = chain_reader(rss20, feed_readers)
168
assert_not_nil(target.itunes_image)
169
assert_equal(url, target.itunes_image.href)
173
def _assert_maker_itunes_duration(hour, minute, second, value,
174
maker_readers, feed_readers)
175
_assert_maker_itunes_duration_by_value(hour, minute, second, value,
176
maker_readers, feed_readers)
177
_assert_maker_itunes_duration_by_hour_minute_second(hour, minute, second,
183
def _assert_maker_itunes_duration_by(hour, minute, second, value,
184
maker_readers, feed_readers)
186
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
187
setup_dummy_channel(maker)
188
setup_dummy_item(maker)
190
target = chain_reader(maker, maker_readers)
191
expected_value = yield(target)
192
assert_equal(expected_value, target.itunes_duration)
193
target.itunes_duration do |duration|
194
assert_equal([hour, minute, second, expected_value],
195
[duration.hour, duration.minute,
196
duration.second, duration.content])
199
target = chain_reader(rss20, feed_readers)
200
duration = target.itunes_duration
201
assert_not_nil(duration)
202
assert_equal([hour, minute, second, expected_value],
203
[duration.hour, duration.minute,
204
duration.second, duration.content])
207
def _assert_maker_itunes_duration_by_value(hour, minute, second, value,
208
maker_readers, feed_readers)
209
_assert_maker_itunes_duration_by(hour, minute, second, value,
210
maker_readers, feed_readers) do |target|
211
target.itunes_duration = value
216
def _assert_maker_itunes_duration_by_hour_minute_second(hour, minute, second,
220
_assert_maker_itunes_duration_by(hour, minute, second, value,
221
maker_readers, feed_readers) do |target|
222
target.itunes_duration do |duration|
224
duration.minute = minute
225
duration.second = second
227
value.split(":").collect {|v| "%02d" % v.to_i}.join(":")
231
def _assert_maker_itunes_duration_invalid_value(value, maker_readers)
232
assert_raise(ArgumentError) do
233
::RSS::Maker.make("rss2.0") do |maker|
234
setup_dummy_channel(maker)
235
setup_dummy_item(maker)
237
target = chain_reader(maker, maker_readers)
238
target.itunes_duration = value
243
def assert_maker_itunes_duration(maker_readers, feed_readers=nil)
245
feed_readers ||= maker_readers
246
_assert_maker_itunes_duration(7, 14, 5, "07:14:05", maker_readers,
248
_assert_maker_itunes_duration(7, 14, 5, "7:14:05", maker_readers,
250
_assert_maker_itunes_duration(0, 4, 55, "04:55", maker_readers,
252
_assert_maker_itunes_duration(0, 4, 5, "4:05", maker_readers,
255
_assert_maker_itunes_duration_invalid_value("5", maker_readers)
256
_assert_maker_itunes_duration_invalid_value("09:07:14:05", maker_readers)
257
_assert_maker_itunes_duration_invalid_value("10:5", maker_readers)
258
_assert_maker_itunes_duration_invalid_value("10:03:5", maker_readers)
259
_assert_maker_itunes_duration_invalid_value("10:3:05", maker_readers)
261
_assert_maker_itunes_duration_invalid_value("xx:xx:xx", maker_readers)
265
def _assert_maker_itunes_explicit(explicit, value,
266
maker_readers, feed_readers)
267
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
268
setup_dummy_channel(maker)
269
setup_dummy_item(maker)
271
target = chain_reader(maker, maker_readers)
272
target.itunes_explicit = value
273
assert_equal(explicit, target.itunes_explicit?)
275
target = chain_reader(rss20, feed_readers)
276
assert_equal(value, target.itunes_explicit)
277
assert_equal(explicit, target.itunes_explicit?)
280
def assert_maker_itunes_explicit(maker_readers, feed_readers=nil)
282
feed_readers ||= maker_readers
283
_assert_maker_itunes_explicit(true, "yes", maker_readers, feed_readers)
284
_assert_maker_itunes_explicit(false, "clean",
285
maker_readers, feed_readers)
286
_assert_maker_itunes_explicit(nil, "no", maker_readers, feed_readers)
290
def _assert_maker_itunes_keywords(keywords, value,
291
maker_readers, feed_readers)
292
_assert_maker_itunes_keywords_by_value(keywords, value,
293
maker_readers, feed_readers)
294
_assert_maker_itunes_keywords_by_keywords(keywords, maker_readers,
298
def _assert_maker_itunes_keywords_by(keywords, maker_readers, feed_readers)
299
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
300
setup_dummy_channel(maker)
301
setup_dummy_item(maker)
303
target = chain_reader(maker, maker_readers)
306
assert_nothing_raised do
307
rss20 = ::RSS::Parser.parse(rss20.to_s)
309
target = chain_reader(rss20, feed_readers)
310
assert_equal(keywords, target.itunes_keywords)
313
def _assert_maker_itunes_keywords_by_value(keywords, value,
314
maker_readers, feed_readers)
315
_assert_maker_itunes_keywords_by(keywords, maker_readers,
316
feed_readers) do |target|
317
target.itunes_keywords = value
321
def _assert_maker_itunes_keywords_by_keywords(keywords,
322
maker_readers, feed_readers)
323
_assert_maker_itunes_keywords_by(keywords, maker_readers,
324
feed_readers) do |target|
325
target.itunes_keywords = keywords
329
def assert_maker_itunes_keywords(maker_readers, feed_readers=nil)
331
feed_readers ||= maker_readers
332
_assert_maker_itunes_keywords(["salt"], "salt",
333
maker_readers, feed_readers)
334
_assert_maker_itunes_keywords(["salt"], " salt ",
335
maker_readers, feed_readers)
336
_assert_maker_itunes_keywords(["salt", "pepper", "shaker", "exciting"],
337
"salt, pepper, shaker, exciting",
338
maker_readers, feed_readers)
339
_assert_maker_itunes_keywords(["metric", "socket", "wrenches",
341
"metric, socket, wrenches, toolsalt",
342
maker_readers, feed_readers)
343
_assert_maker_itunes_keywords(["olitics", "red", "blue", "state"],
344
"olitics, red, blue, state",
345
maker_readers, feed_readers)
349
def assert_maker_itunes_new_feed_url(maker_readers, feed_readers=nil)
350
feed_readers ||= maker_readers
351
url = "http://newlocation.com/example.rss"
353
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
354
setup_dummy_channel(maker)
355
setup_dummy_item(maker)
357
target = chain_reader(maker, maker_readers)
358
target.itunes_new_feed_url = url
360
target = chain_reader(rss20, feed_readers)
361
assert_equal(url, target.itunes_new_feed_url)
364
def _assert_maker_itunes_owner(name, email, maker_readers, feed_readers)
365
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
366
setup_dummy_channel(maker)
367
setup_dummy_item(maker)
369
target = chain_reader(maker, maker_readers)
370
owner = target.itunes_owner
371
owner.itunes_name = name
372
owner.itunes_email = email
374
owner = chain_reader(rss20, feed_readers).itunes_owner
375
if name.nil? and email.nil?
378
assert_not_nil(owner)
379
assert_equal(name, owner.itunes_name)
380
assert_equal(email, owner.itunes_email)
384
def assert_maker_itunes_owner(maker_readers, feed_readers=nil)
386
feed_readers ||= maker_readers
387
_assert_maker_itunes_owner("John Doe", "john.doe@example.com",
388
maker_readers, feed_readers)
390
not_set_name = (["maker"] + maker_readers + ["itunes_owner"]).join(".")
391
assert_not_set_error(not_set_name, ["itunes_name"]) do
392
_assert_maker_itunes_owner(nil, "john.doe@example.com",
393
maker_readers, feed_readers)
395
assert_not_set_error(not_set_name, ["itunes_email"]) do
396
_assert_maker_itunes_owner("John Doe", nil,
397
maker_readers, feed_readers)
400
_assert_maker_itunes_owner(nil, nil, maker_readers, feed_readers)
404
def _assert_maker_itunes_subtitle(subtitle, maker_readers, feed_readers)
405
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
406
setup_dummy_channel(maker)
407
setup_dummy_item(maker)
409
target = chain_reader(maker, maker_readers)
410
target.itunes_subtitle = subtitle
413
target = chain_reader(rss20, feed_readers)
414
assert_equal(subtitle, target.itunes_subtitle)
417
def assert_maker_itunes_subtitle(maker_readers, feed_readers=nil)
419
feed_readers ||= maker_readers
420
_assert_maker_itunes_subtitle("A show about everything",
421
maker_readers, feed_readers)
422
_assert_maker_itunes_subtitle("A short primer on table spices",
423
maker_readers, feed_readers)
424
_assert_maker_itunes_subtitle("Comparing socket wrenches is fun!",
425
maker_readers, feed_readers)
426
_assert_maker_itunes_subtitle("Red + Blue != Purple",
427
maker_readers, feed_readers)
431
def _assert_maker_itunes_summary(summary, maker_readers, feed_readers)
432
rss20 = ::RSS::Maker.make("rss2.0") do |maker|
433
setup_dummy_channel(maker)
434
setup_dummy_item(maker)
436
target = chain_reader(maker, maker_readers)
437
target.itunes_summary = summary
440
target = chain_reader(rss20, feed_readers)
441
assert_equal(summary, target.itunes_summary)
444
def assert_maker_itunes_summary(maker_readers, feed_readers=nil)
446
feed_readers ||= maker_readers
447
_assert_maker_itunes_summary("All About Everything is a show about " +
448
"everything. Each week we dive into any " +
449
"subject known to man and talk about it " +
450
"as much as we can. Look for our Podcast " +
451
"in the iTunes Music Store",
452
maker_readers, feed_readers)
453
_assert_maker_itunes_summary("This week we talk about salt and pepper " +
454
"shakers, comparing and contrasting pour " +
455
"rates, construction materials, and " +
456
"overall aesthetics. Come and join the " +
458
maker_readers, feed_readers)
459
_assert_maker_itunes_summary("This week we talk about metric vs. old " +
460
"english socket wrenches. Which one is " +
461
"better? Do you really need both? Get " +
462
"all of your answers here.",
463
maker_readers, feed_readers)
464
_assert_maker_itunes_summary("This week we talk about surviving in a " +
465
"Red state if you’re a Blue person. Or " +
467
maker_readers, feed_readers)