mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 3e92b635fb
			
		
	
	
		3e92b635fb
		
	
	
	
	
		
			
			When you change this to true, you may need to add more tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			144 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: false
 | |
| require_relative "rss-testcase"
 | |
| 
 | |
| require "rss/maker"
 | |
| 
 | |
| module RSS
 | |
|   class TestSetupMakerITunes < TestCase
 | |
|     def test_setup_maker_simple
 | |
|       author = "John Doe"
 | |
|       block = true
 | |
|       categories = ["Audio Blogs"]
 | |
|       image = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
 | |
|       duration = "4:05"
 | |
|       duration_components = [0, 4, 5]
 | |
|       explicit = true
 | |
|       keywords = ["salt", "pepper", "shaker", "exciting"]
 | |
|       owner = {:name => "John Doe", :email => "john.doe@example.com"}
 | |
|       subtitle = "A show about everything"
 | |
|       summary = "All About Everything is a show about " +
 | |
|         "everything. Each week we dive into any " +
 | |
|         "subject known to man and talk about it " +
 | |
|         "as much as we can. Look for our Podcast " +
 | |
|         "in the iTunes Music Store"
 | |
| 
 | |
|       feed = RSS::Maker.make("rss2.0") do |maker|
 | |
|         setup_dummy_channel(maker)
 | |
|         setup_dummy_item(maker)
 | |
| 
 | |
|         channel = maker.channel
 | |
|         channel.itunes_author = author
 | |
|         channel.itunes_block = block
 | |
|         categories.each do |category|
 | |
|           channel.itunes_categories.new_category.text = category
 | |
|         end
 | |
|         channel.itunes_image = image
 | |
|         channel.itunes_explicit = explicit
 | |
|         channel.itunes_keywords = keywords
 | |
|         channel.itunes_owner.itunes_name = owner[:name]
 | |
|         channel.itunes_owner.itunes_email = owner[:email]
 | |
|         channel.itunes_subtitle = subtitle
 | |
|         channel.itunes_summary = summary
 | |
| 
 | |
|         item = maker.items.last
 | |
|         item.itunes_author = author
 | |
|         item.itunes_block = block
 | |
|         item.itunes_duration = duration
 | |
|         item.itunes_explicit = explicit
 | |
|         item.itunes_keywords = keywords
 | |
|         item.itunes_subtitle = subtitle
 | |
|         item.itunes_summary = summary
 | |
|       end
 | |
|       assert_not_nil(feed)
 | |
| 
 | |
|       new_feed = RSS::Maker.make("rss2.0") do |maker|
 | |
|         feed.setup_maker(maker)
 | |
|       end
 | |
|       assert_not_nil(new_feed)
 | |
| 
 | |
|       channel = new_feed.channel
 | |
|       item = new_feed.items.last
 | |
| 
 | |
|       assert_equal(author, channel.itunes_author)
 | |
|       assert_equal(author, item.itunes_author)
 | |
| 
 | |
|       assert_equal(block, channel.itunes_block?)
 | |
|       assert_equal(block, item.itunes_block?)
 | |
| 
 | |
|       assert_equal(categories,
 | |
|                    collect_itunes_categories(channel.itunes_categories))
 | |
| 
 | |
|       assert_equal(image, channel.itunes_image.href)
 | |
| 
 | |
|       assert_equal(duration_components,
 | |
|                    [item.itunes_duration.hour,
 | |
|                     item.itunes_duration.minute,
 | |
|                     item.itunes_duration.second])
 | |
| 
 | |
|       assert_equal(explicit, channel.itunes_explicit?)
 | |
|       assert_equal(explicit, item.itunes_explicit?)
 | |
| 
 | |
|       assert_equal(keywords, channel.itunes_keywords)
 | |
|       assert_equal(keywords, item.itunes_keywords)
 | |
| 
 | |
|       assert_equal(owner,
 | |
|                    {
 | |
|                      :name => channel.itunes_owner.itunes_name,
 | |
|                      :email => channel.itunes_owner.itunes_email
 | |
|                    })
 | |
| 
 | |
|       assert_equal(subtitle, channel.itunes_subtitle)
 | |
|       assert_equal(subtitle, item.itunes_subtitle)
 | |
| 
 | |
|       assert_equal(summary, channel.itunes_summary)
 | |
|       assert_equal(summary, item.itunes_summary)
 | |
|     end
 | |
| 
 | |
|     def test_setup_maker_with_nested_categories
 | |
|       categories = [["Arts & Entertainment", "Games"],
 | |
|                     ["Technology", "Computers"],
 | |
|                     "Audio Blogs"]
 | |
| 
 | |
|       feed = RSS::Maker.make("rss2.0") do |maker|
 | |
|         setup_dummy_channel(maker)
 | |
|         setup_dummy_item(maker)
 | |
| 
 | |
|         channel = maker.channel
 | |
|         categories.each do |category|
 | |
|           target = channel.itunes_categories
 | |
|           if category.is_a?(Array)
 | |
|             category.each do |sub_category|
 | |
|               target = target.new_category
 | |
|               target.text = sub_category
 | |
|             end
 | |
|           else
 | |
|             target.new_category.text = category
 | |
|           end
 | |
|         end
 | |
|       end
 | |
|       assert_not_nil(feed)
 | |
| 
 | |
|       new_feed = RSS::Maker.make("rss2.0") do |maker|
 | |
|         feed.setup_maker(maker)
 | |
|       end
 | |
|       assert_not_nil(new_feed)
 | |
| 
 | |
|       channel = new_feed.channel
 | |
| 
 | |
|       assert_equal(categories,
 | |
|                    collect_itunes_categories(channel.itunes_categories))
 | |
|     end
 | |
| 
 | |
|     private
 | |
|     def collect_itunes_categories(categories)
 | |
|       categories.collect do |c|
 | |
|         rest = collect_itunes_categories(c.itunes_categories)
 | |
|         if rest.empty?
 | |
|           c.text
 | |
|         else
 | |
|           [c.text, *rest]
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |