require_relative "rss-testcase" require "rss/maker" module RSS class TestMaker10 < TestCase def test_supported? assert(RSS::Maker.supported?("1.0")) assert(RSS::Maker.supported?("rss1.0")) assert(!RSS::Maker.supported?("1.1")) assert(!RSS::Maker.supported?("rss1.1")) end def test_find_class assert_equal(RSS::Maker::RSS10, RSS::Maker["1.0"]) assert_equal(RSS::Maker::RSS10, RSS::Maker["rss1.0"]) end def test_rdf assert_raise(LocalJumpError) do RSS::Maker.make("1.0") end rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) setup_dummy_item(maker) end assert_equal("1.0", rss.rss_version) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.encoding = "EUC-JP" setup_dummy_item(maker) end assert_equal("1.0", rss.rss_version) assert_equal("EUC-JP", rss.encoding) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.standalone = "yes" setup_dummy_item(maker) end assert_equal("1.0", rss.rss_version) assert_equal("yes", rss.standalone) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.encoding = "EUC-JP" maker.standalone = "yes" setup_dummy_item(maker) end assert_equal("1.0", rss.rss_version) assert_equal("EUC-JP", rss.encoding) assert_equal("yes", rss.standalone) end def test_channel about = "http://hoge.com" title = "fugafuga" link = "http://hoge.com" description = "fugafugafugafuga" rss = RSS::Maker.make("1.0") do |maker| maker.channel.about = about maker.channel.title = title maker.channel.link = link maker.channel.description = description setup_dummy_item(maker) end channel = rss.channel assert_equal(about, channel.about) assert_equal(title, channel.title) assert_equal(link, channel.link) assert_equal(description, channel.description) assert_equal(1, channel.items.Seq.lis.size) assert_nil(channel.image) assert_nil(channel.textinput) rss = RSS::Maker.make("1.0") do |maker| maker.channel.about = about maker.channel.title = title maker.channel.link = link maker.channel.description = description setup_dummy_image(maker) setup_dummy_textinput(maker) setup_dummy_item(maker) end channel = rss.channel assert_equal(about, channel.about) assert_equal(title, channel.title) assert_equal(link, channel.link) assert_equal(description, channel.description) assert_equal(1, channel.items.Seq.lis.size) assert_equal(rss.image.about, channel.image.resource) assert_equal(rss.textinput.about, channel.textinput.resource) end def test_channel_language about = "http://hoge.com" title = "fugafuga" link = "http://hoge.com" description = "fugafugafugafuga" language = "ja" rss = RSS::Maker.make("1.0") do |maker| maker.channel.about = about maker.channel.title = title maker.channel.link = link maker.channel.description = description maker.channel.language = language setup_dummy_item(maker) end channel = rss.channel assert_equal(language, channel.dc_language) end def test_not_valid_channel about = "http://hoge.com" title = "fugafuga" link = "http://hoge.com" description = "fugafugafugafuga" assert_not_set_error("maker.channel", %w(about)) do RSS::Maker.make("1.0") do |maker| # maker.channel.about = about maker.channel.title = title maker.channel.link = link maker.channel.description = description end end assert_not_set_error("maker.channel", %w(title)) do RSS::Maker.make("1.0") do |maker| maker.channel.about = about # maker.channel.title = title maker.channel.link = link maker.channel.description = description end end assert_not_set_error("maker.channel", %w(link)) do RSS::Maker.make("1.0") do |maker| maker.channel.about = about maker.channel.title = title # maker.channel.link = link maker.channel.description = description end end assert_not_set_error("maker.channel", %w(description)) do RSS::Maker.make("1.0") do |maker| maker.channel.about = about maker.channel.title = title maker.channel.link = link # maker.channel.description = description end end end def test_image title = "fugafuga" link = "http://hoge.com" url = "http://hoge.com/hoge.png" rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.channel.link = link maker.image.title = title maker.image.url = url setup_dummy_item(maker) end image = rss.image assert_equal(url, image.about) assert_equal(url, rss.channel.image.resource) assert_equal(title, image.title) assert_equal(link, image.link) assert_equal(url, image.url) assert_not_set_error("maker.channel", %w(about title description)) do RSS::Maker.make("1.0") do |maker| # setup_dummy_channel(maker) maker.channel.link = link maker.image.title = title maker.image.url = url end end end def test_not_valid_image title = "fugafuga" link = "http://hoge.com" url = "http://hoge.com/hoge.png" rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.channel.link = link # maker.image.url = url maker.image.title = title setup_dummy_item(maker) end assert_nil(rss.channel.image) assert_nil(rss.image) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.channel.link = link maker.image.url = url # maker.image.title = title setup_dummy_item(maker) end assert_nil(rss.channel.image) assert_nil(rss.image) assert_not_set_error("maker.channel", %w(link)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) # maker.channel.link = link maker.channel.link = nil maker.image.url = url maker.image.title = title setup_dummy_item(maker) end end end def test_items(with_convenience_way=true) title = "TITLE" link = "http://hoge.com/" description = "text hoge fuga" assert_not_set_error("maker", %w(items)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) end end rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.items.new_item do |item| item.title = title item.link = link # item.description = description end end assert_equal(1, rss.items.size) item = rss.items.first assert_equal(link, item.about) assert_equal(title, item.title) assert_equal(link, item.link) assert_nil(item.description) item_size = 5 rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) item_size.times do |i| maker.items.new_item do |_item| _item.title = "#{title}#{i}" _item.link = "#{link}#{i}" _item.description = "#{description}#{i}" end end maker.items.do_sort = true end assert_equal(item_size, rss.items.size) rss.items.each_with_index do |_item, i| assert_equal("#{link}#{i}", _item.about) assert_equal("#{title}#{i}", _item.title) assert_equal("#{link}#{i}", _item.link) assert_equal("#{description}#{i}", _item.description) end rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) item_size.times do |i| maker.items.new_item do |_item| _item.title = "#{title}#{i}" _item.link = "#{link}#{i}" _item.description = "#{description}#{i}" end end maker.items.do_sort = Proc.new do |x, y| if with_convenience_way y.title[-1] <=> x.title[-1] else y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]} end end end assert_equal(item_size, rss.items.size) rss.items.reverse.each_with_index do |_item, i| assert_equal("#{link}#{i}", _item.about) assert_equal("#{title}#{i}", _item.title) assert_equal("#{link}#{i}", _item.link) assert_equal("#{description}#{i}", _item.description) end max_size = item_size / 2 rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) item_size.times do |i| maker.items.new_item do |_item| _item.title = "#{title}#{i}" _item.link = "#{link}#{i}" _item.description = "#{description}#{i}" end end maker.items.max_size = max_size end assert_equal(max_size, rss.items.size) rss.items.each_with_index do |_item, i| assert_equal("#{link}#{i}", _item.about) assert_equal("#{title}#{i}", _item.title) assert_equal("#{link}#{i}", _item.link) assert_equal("#{description}#{i}", _item.description) end max_size = 0 assert_not_set_error("maker", %w(items)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) item_size.times do |i| maker.items.new_item do |_item| _item.title = "#{title}#{i}" _item.link = "#{link}#{i}" _item.description = "#{description}#{i}" end end maker.items.max_size = max_size end end max_size = -2 rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) item_size.times do |i| maker.items.new_item do |_item| _item.title = "#{title}#{i}" _item.link = "#{link}#{i}" _item.description = "#{description}#{i}" end end maker.items.max_size = max_size end assert_equal(item_size + max_size + 1, rss.items.size) rss.items.each_with_index do |_item, i| assert_equal("#{link}#{i}", _item.about) assert_equal("#{title}#{i}", _item.title) assert_equal("#{link}#{i}", _item.link) assert_equal("#{description}#{i}", _item.description) end end def test_items_with_new_api_since_018 test_items(false) end def test_not_valid_items title = "TITLE" link = "http://hoge.com/" assert_not_set_error("maker.item", %w(title)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.items.new_item do |item| # item.title = title item.link = link end end end assert_not_set_error("maker.item", %w(link)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.items.new_item do |item| item.title = title # item.link = link end end end assert_not_set_error("maker.item", %w(title link)) do RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.items.new_item do |item| # item.title = title # item.link = link end end end end def test_textinput title = "fugafuga" description = "text hoge fuga" name = "hoge" link = "http://hoge.com" rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.textinput.link = link maker.textinput.title = title maker.textinput.description = description maker.textinput.name = name setup_dummy_item(maker) end textinput = rss.textinput assert_equal(link, textinput.about) assert_equal(link, rss.channel.textinput.resource) assert_equal(title, textinput.title) assert_equal(name, textinput.name) assert_equal(description, textinput.description) assert_equal(link, textinput.link) assert_not_set_error("maker.channel", %w(about link description title)) do RSS::Maker.make("1.0") do |maker| # setup_dummy_channel(maker) maker.textinput.link = link maker.textinput.title = title maker.textinput.description = description maker.textinput.name = name end end end def test_not_valid_textinput title = "fugafuga" description = "text hoge fuga" name = "hoge" link = "http://hoge.com" rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) # maker.textinput.link = link maker.textinput.title = title maker.textinput.description = description maker.textinput.name = name setup_dummy_item(maker) end assert_nil(rss.channel.textinput) assert_nil(rss.textinput) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.textinput.link = link # maker.textinput.title = title maker.textinput.description = description maker.textinput.name = name setup_dummy_item(maker) end assert_nil(rss.channel.textinput) assert_nil(rss.textinput) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.textinput.link = link maker.textinput.title = title # maker.textinput.description = description maker.textinput.name = name setup_dummy_item(maker) end assert_nil(rss.channel.textinput) assert_nil(rss.textinput) rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) maker.textinput.link = link maker.textinput.title = title maker.textinput.description = description # maker.textinput.name = name setup_dummy_item(maker) end assert_nil(rss.channel.textinput) assert_nil(rss.textinput) end end end