mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	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
		
			
				
	
	
		
			394 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			394 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: false
 | 
						|
require_relative "rss-testcase"
 | 
						|
 | 
						|
require "rss/maker"
 | 
						|
 | 
						|
module RSS
 | 
						|
  class TestMakerAtomEntry < TestCase
 | 
						|
    def test_supported?
 | 
						|
      assert(RSS::Maker.supported?("atom:entry"))
 | 
						|
      assert(RSS::Maker.supported?("atom1.0:entry"))
 | 
						|
      assert(!RSS::Maker.supported?("atom2.0:entry"))
 | 
						|
    end
 | 
						|
 | 
						|
    def test_find_class
 | 
						|
      assert_equal(RSS::Maker::Atom::Entry, RSS::Maker["atom:entry"])
 | 
						|
      assert_equal(RSS::Maker::Atom::Entry, RSS::Maker["atom1.0:entry"])
 | 
						|
    end
 | 
						|
 | 
						|
    def test_root_element
 | 
						|
      entry = Maker.make("atom:entry") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
 | 
						|
 | 
						|
      entry = Maker.make("atom:entry") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.encoding = "EUC-JP"
 | 
						|
      end
 | 
						|
      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
 | 
						|
      assert_equal("EUC-JP", entry.encoding)
 | 
						|
 | 
						|
      entry = Maker.make("atom:entry") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.standalone = "yes"
 | 
						|
      end
 | 
						|
      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
 | 
						|
      assert_equal("yes", entry.standalone)
 | 
						|
 | 
						|
      entry = Maker.make("atom:entry") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.encoding = "EUC-JP"
 | 
						|
        maker.standalone = "yes"
 | 
						|
      end
 | 
						|
      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
 | 
						|
      assert_equal("EUC-JP", entry.encoding)
 | 
						|
      assert_equal("yes", entry.standalone)
 | 
						|
    end
 | 
						|
 | 
						|
    def test_invalid_feed
 | 
						|
      assert_not_set_error("maker.item", %w(id title author updated)) do
 | 
						|
        Maker.make("atom:entry") do |maker|
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      assert_not_set_error("maker.item", %w(id title updated)) do
 | 
						|
        Maker.make("atom:entry") do |maker|
 | 
						|
          maker.channel.author = "foo"
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      assert_not_set_error("maker.item", %w(title updated)) do
 | 
						|
        Maker.make("atom:entry") do |maker|
 | 
						|
          maker.channel.author = "foo"
 | 
						|
          maker.channel.id = "http://example.com"
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      assert_not_set_error("maker.item", %w(updated)) do
 | 
						|
        Maker.make("atom:entry") do |maker|
 | 
						|
          maker.channel.author = "foo"
 | 
						|
          maker.channel.id = "http://example.com"
 | 
						|
          maker.channel.title = "Atom Feed"
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      assert_not_set_error("maker.item", %w(author)) do
 | 
						|
        Maker.make("atom:entry") do |maker|
 | 
						|
          maker.channel.id = "http://example.com"
 | 
						|
          maker.channel.title = "Atom Feed"
 | 
						|
          maker.channel.updated = Time.now
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      entry = Maker.make("atom:entry") do |maker|
 | 
						|
        maker.channel.author = "Foo"
 | 
						|
        maker.channel.id = "http://example.com"
 | 
						|
        maker.channel.title = "Atom Feed"
 | 
						|
        maker.channel.updated = Time.now
 | 
						|
      end
 | 
						|
      assert_not_nil(entry)
 | 
						|
    end
 | 
						|
 | 
						|
    def test_author
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["channel", "authors"],
 | 
						|
                                ["authors"],
 | 
						|
                                "maker.channel.author") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["items", "first", "authors"],
 | 
						|
                                ["authors"],
 | 
						|
                                "maker.item.author",
 | 
						|
                                "maker.item", ["author"]) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.authors.clear
 | 
						|
        maker.items.first.authors.clear
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["items", "first", "source", "authors"],
 | 
						|
                                ["source", "authors"],
 | 
						|
                                "maker.item.source.author") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_category
 | 
						|
      assert_maker_atom_categories("entry",
 | 
						|
                                   ["channel", "categories"],
 | 
						|
                                   ["categories"],
 | 
						|
                                   "maker.channel.category") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_categories("entry",
 | 
						|
                                   ["items", "first", "categories"],
 | 
						|
                                   ["categories"],
 | 
						|
                                   "maker.item.category") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_categories("entry",
 | 
						|
                                   ["items", "first", "source", "categories"],
 | 
						|
                                   ["source", "categories"],
 | 
						|
                                   "maker.item.source.category") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_content
 | 
						|
      assert_maker_atom_content("entry",
 | 
						|
                                ["items", "first", "content"],
 | 
						|
                                ["content"],
 | 
						|
                                "maker.item.content") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_contributor
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["channel", "contributors"],
 | 
						|
                                ["contributors"],
 | 
						|
                                "maker.channel.contributor") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["items", "first", "contributors"],
 | 
						|
                                ["contributors"],
 | 
						|
                                "maker.item.contributor") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_persons("entry",
 | 
						|
                                ["items", "first", "source", "contributors"],
 | 
						|
                                ["source", "contributors"],
 | 
						|
                                "maker.item.source.contributor") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_link
 | 
						|
      assert_maker_atom_links("entry",
 | 
						|
                              ["channel", "links"],
 | 
						|
                              ["links"],
 | 
						|
                              "maker.channel.link") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.links.clear
 | 
						|
        maker.items.first.links.clear
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_links("entry",
 | 
						|
                              ["items", "first", "links"],
 | 
						|
                              ["links"],
 | 
						|
                              "maker.item.link") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.links.clear
 | 
						|
        maker.items.first.links.clear
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_links("entry",
 | 
						|
                              ["items", "first", "source", "links"],
 | 
						|
                              ["source", "links"],
 | 
						|
                              "maker.item.source.link", true) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_published
 | 
						|
      assert_maker_atom_date_construct("entry",
 | 
						|
                                       ["items", "first", "published"],
 | 
						|
                                       ["published"]
 | 
						|
                                       ) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_rights
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["channel", "copyright"],
 | 
						|
                                       ["rights"]) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "rights"],
 | 
						|
                                       ["rights"],
 | 
						|
                                       nil, nil, "maker.item.rights"
 | 
						|
                                       ) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "source", "rights"],
 | 
						|
                                       ["source", "rights"],
 | 
						|
                                       nil, nil, "maker.item.source.rights"
 | 
						|
                                       ) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
 | 
						|
    def test_source_generator
 | 
						|
      assert_maker_atom_generator("entry",
 | 
						|
                                  ["items", "first", "source", "generator"],
 | 
						|
                                  ["source", "generator"],
 | 
						|
                                  "maker.item.source.generator") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_source_icon
 | 
						|
      assert_maker_atom_icon("entry",
 | 
						|
                             ["items", "first", "source", "icon"],
 | 
						|
                             ["source", "icon"],
 | 
						|
                             nil, "maker.item.source.icon") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_source_id
 | 
						|
      assert_maker_atom_id("entry",
 | 
						|
                           ["items", "first", "source"],
 | 
						|
                           ["source"],
 | 
						|
                           "maker.item.source") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_source_logo
 | 
						|
      assert_maker_atom_logo("entry",
 | 
						|
                             ["items", "first", "source", "logo"],
 | 
						|
                             ["source", "logo"],
 | 
						|
                             nil,
 | 
						|
                             "maker.item.source.logo") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_source_subtitle
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "source", "subtitle"],
 | 
						|
                                       ["source", "subtitle"],
 | 
						|
                                       nil, nil,
 | 
						|
                                       "maker.item.source.subtitle") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_summary
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "description"],
 | 
						|
                                       ["summary"],
 | 
						|
                                       nil, nil, "maker.item.description"
 | 
						|
                                       ) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_title
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["channel", "title"], ["title"],
 | 
						|
                                       "maker.item", ["title"],
 | 
						|
                                       "maker.channel.title") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.title = nil
 | 
						|
        maker.items.first.title = nil
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "title"],
 | 
						|
                                       ["title"],
 | 
						|
                                       "maker.item", ["title"],
 | 
						|
                                       "maker.item.title") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.title = nil
 | 
						|
        maker.items.first.title = nil
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_text_construct("entry",
 | 
						|
                                       ["items", "first", "source", "title"],
 | 
						|
                                       ["source", "title"],
 | 
						|
                                       nil, nil, "maker.item.source.title"
 | 
						|
                                       ) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_updated
 | 
						|
      assert_maker_atom_date_construct("entry",
 | 
						|
                                       ["channel", "updated"], ["updated"],
 | 
						|
                                       "maker.item", ["updated"]) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.updated = nil
 | 
						|
        maker.items.first.updated = nil
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_date_construct("entry",
 | 
						|
                                       ["items", "first", "updated"],
 | 
						|
                                       ["updated"],
 | 
						|
                                       "maker.item", ["updated"]) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
        maker.channel.updated = nil
 | 
						|
        maker.items.first.updated = nil
 | 
						|
      end
 | 
						|
 | 
						|
      assert_maker_atom_date_construct("entry",
 | 
						|
                                       ["items", "first", "source", "updated"],
 | 
						|
                                       ["source", "updated"]) do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        setup_dummy_item_atom(maker)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_date
 | 
						|
      date = Time.parse("2004/11/1 10:10")
 | 
						|
      feed = Maker.make("atom:entry") do |maker|
 | 
						|
        setup_dummy_channel_atom(maker)
 | 
						|
        maker.channel.date = nil
 | 
						|
        maker.items.new_item do |item|
 | 
						|
          item.link = "http://example.com/article.html"
 | 
						|
          item.title = "Sample Article"
 | 
						|
          item.date = date
 | 
						|
        end
 | 
						|
      end
 | 
						|
      assert_equal(date, feed.items[0].updated.content)
 | 
						|
      assert_equal([date], feed.items[0].dc_dates.collect {|_date| _date.value})
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |