6 class TestSetupMakerITunes < TestCase
7 def test_setup_maker_simple
10 categories = ["Audio Blogs"]
11 image = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
13 duration_components = [0, 4, 5]
15 keywords = ["salt", "pepper", "shaker", "exciting"]
16 new_feed_url = "http://newlocation.com/example.rss"
17 owner = {:name => "John Doe", :email => "john.doe@example.com"}
18 subtitle = "A show about everything"
19 summary = "All About Everything is a show about " +
20 "everything. Each week we dive into any " +
21 "subject known to man and talk about it " +
22 "as much as we can. Look for our Podcast " +
23 "in the iTunes Music Store"
25 feed = RSS::Maker.make("rss2.0") do |maker|
26 setup_dummy_channel(maker)
27 setup_dummy_item(maker)
29 channel = maker.channel
30 channel.itunes_author = author
31 channel.itunes_block = block
32 categories.each do |category|
33 channel.itunes_categories.new_category.text = category
35 channel.itunes_image = image
36 channel.itunes_explicit = explicit
37 channel.itunes_keywords = keywords
38 channel.itunes_owner.itunes_name = owner[:name]
39 channel.itunes_owner.itunes_email = owner[:email]
40 channel.itunes_subtitle = subtitle
41 channel.itunes_summary = summary
43 item = maker.items.last
44 item.itunes_author = author
45 item.itunes_block = block
46 item.itunes_duration = duration
47 item.itunes_explicit = explicit
48 item.itunes_keywords = keywords
49 item.itunes_subtitle = subtitle
50 item.itunes_summary = summary
54 new_feed = RSS::Maker.make("rss2.0") do |maker|
55 feed.setup_maker(maker)
57 assert_not_nil(new_feed)
59 channel = new_feed.channel
60 item = new_feed.items.last
62 assert_equal(author, channel.itunes_author)
63 assert_equal(author, item.itunes_author)
65 assert_equal(block, channel.itunes_block?)
66 assert_equal(block, item.itunes_block?)
68 assert_equal(categories,
69 collect_itunes_categories(channel.itunes_categories))
71 assert_equal(image, channel.itunes_image.href)
73 assert_equal(duration_components,
74 [item.itunes_duration.hour,
75 item.itunes_duration.minute,
76 item.itunes_duration.second])
78 assert_equal(explicit, channel.itunes_explicit?)
79 assert_equal(explicit, item.itunes_explicit?)
81 assert_equal(keywords, channel.itunes_keywords)
82 assert_equal(keywords, item.itunes_keywords)
86 :name => channel.itunes_owner.itunes_name,
87 :email => channel.itunes_owner.itunes_email
90 assert_equal(subtitle, channel.itunes_subtitle)
91 assert_equal(subtitle, item.itunes_subtitle)
93 assert_equal(summary, channel.itunes_summary)
94 assert_equal(summary, item.itunes_summary)
97 def test_setup_maker_with_nested_categories
98 categories = [["Arts & Entertainment", "Games"],
99 ["Technology", "Computers"],
102 feed = RSS::Maker.make("rss2.0") do |maker|
103 setup_dummy_channel(maker)
104 setup_dummy_item(maker)
106 channel = maker.channel
107 categories.each do |category|
108 target = channel.itunes_categories
109 if category.is_a?(Array)
110 category.each do |sub_category|
111 target = target.new_category
112 target.text = sub_category
115 target.new_category.text = category
121 new_feed = RSS::Maker.make("rss2.0") do |maker|
122 feed.setup_maker(maker)
124 assert_not_nil(new_feed)
126 channel = new_feed.channel
128 assert_equal(categories,
129 collect_itunes_categories(channel.itunes_categories))
133 def collect_itunes_categories(categories)
134 categories.collect do |c|
135 rest = collect_itunes_categories(c.itunes_categories)