diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-11-23 09:24:17 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-11-23 09:24:17 +0000 |
commit | 4ef7ec62cab725ad1dea2be9a26ca0f9fd195729 (patch) | |
tree | 2433c8b783f7af942de18409be11a6fded9852c9 /test | |
parent | f988ceb53b731f7465f8ace09c76cd69e9abef22 (diff) |
* lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
Maker.
* lib/rss/taxonomy.rb: supported RSS Maker.
* lib/rss/maker.rb: added taxonomy module support.
* lib/rss/rss.rb: adjusted to other element API.
* lib/rss/1.0.rb: adjusted to other element API but backward
compatibility is reserved.
* lib/rss/0.9.rb: ditto.
* test/rss/test_maker_taxo.rb: added test case for taxonomy module
for RSS Maker.
* test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
* test/rss/test_setup_maker_1.0.rb: added backward compatibility
test.
* test/rss/test_setup_maker_0.9.rb: ditto.
* test/rss/test_setup_maker_2.0.rb: ditto.
* test/rss/rss-testcase.rb: added convenience method for setting
up taxo:topic.
* test/rss/rss-assertions.rb: added assertion for taxo:topic.
* sample/rss/blend.rb: followed new API.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/rss/rss-assertions.rb | 19 | ||||
-rw-r--r-- | test/rss/rss-testcase.rb | 19 | ||||
-rw-r--r-- | test/rss/test_maker_taxo.rb | 79 | ||||
-rw-r--r-- | test/rss/test_setup_maker_0.9.rb | 12 | ||||
-rw-r--r-- | test/rss/test_setup_maker_1.0.rb | 214 | ||||
-rw-r--r-- | test/rss/test_setup_maker_2.0.rb | 12 |
6 files changed, 344 insertions, 11 deletions
diff --git a/test/rss/rss-assertions.rb b/test/rss/rss-assertions.rb index f5e8c5ccaa..d8e597cd5a 100644 --- a/test/rss/rss-assertions.rb +++ b/test/rss/rss-assertions.rb @@ -435,6 +435,25 @@ module RSS end end + def assert_taxo_topic(topics, target) + _wrap_assertion do + topics.each_with_index do |topic, i| + taxo_topic = target.taxo_topics[i] + topic.each do |name, value| + case name + when :link + assert_equal(value, taxo_topic.about) + assert_equal(value, taxo_topic.taxo_link) + when :topics + assert_equal(value, taxo_topic.taxo_topics.resources) + else + assert_equal(value, taxo_topic.__send__("dc_#{name}")) + end + end + end + end + end + def assert_attributes(attrs, names, target) _wrap_assertion do diff --git a/test/rss/rss-testcase.rb b/test/rss/rss-testcase.rb index f3a2760fd2..0612abcccd 100644 --- a/test/rss/rss-testcase.rb +++ b/test/rss/rss-testcase.rb @@ -248,5 +248,24 @@ EOC item.link = link end + def setup_taxo_topic(target, topics) + topics.each do |topic| + taxo_topic = target.taxo_topics.new_taxo_topic + topic.each do |name, value| + case name + when :link + taxo_topic.taxo_link = value + when :topics + value.each do |t| + taxo_topic.taxo_topics << t + end + else + dc_elems = taxo_topic.__send__("dc_#{name}s") + dc_elem = dc_elems.__send__("new_#{name}") + dc_elem.value = value + end + end + end + end end end diff --git a/test/rss/test_maker_taxo.rb b/test/rss/test_maker_taxo.rb new file mode 100644 index 0000000000..1c7d2844ce --- /dev/null +++ b/test/rss/test_maker_taxo.rb @@ -0,0 +1,79 @@ +require "rss-testcase" + +require "rss/maker" + +module RSS + class TestMakerTaxonomy < TestCase + + def setup + @uri = "http://purl.org/rss/1.0/modules/taxonomy/" + + @resources = [ + "http://meerkat.oreillynet.com/?c=cat23", + "http://meerkat.oreillynet.com/?c=47", + "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/", + ] + + @topics = [ + { + :link => "http://meerkat.oreillynet.com/?c=cat23", + :title => "Data: XML", + :description => "A Meerkat channel", + }, + { + :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/", + :title => "XML", + :subject => "XML", + :description => "DMOZ category", + :topics => [ + "http://meerkat.oreillynet.com/?c=cat23", + "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/", + "http://dmoz.org/Computers/Programming/Internet/", + ] + }, + ] + end + + def test_rss10 + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + set_topics(maker.channel) + + setup_dummy_item(maker) + set_topics(maker.items.last) + + setup_taxo_topic(maker, @topics) + end + assert_equal(@resources, rss.channel.taxo_topics.resources) + assert_equal(@resources, rss.items.last.taxo_topics.resources) + assert_taxo_topic(@topics, rss) + end + + def _test_date + t1 = Time.iso8601("2000-01-01T12:00:05+00:00") + t2 = Time.iso8601("2005-01-01T12:00:05+00:00") + + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + maker.channel.date = t1 + date = maker.channel.dc_dates.new_date + date.value = t2 + + setup_dummy_item(maker) + item = maker.items.last + item.date = t2 + date = item.dc_dates.new_date + date.value = t1 + end + assert_equal([t1, t2], rss.channel.dc_dates.collect{|x| x.value}) + assert_equal([t2, t1], rss.items.last.dc_dates.collect{|x| x.value}) + end + + private + def set_topics(target, resources=@resources) + resources.each do |value| + target.taxo_topics << value + end + end + end +end diff --git a/test/rss/test_setup_maker_0.9.rb b/test/rss/test_setup_maker_0.9.rb index e0f26d5593..217ea8bf63 100644 --- a/test/rss/test_setup_maker_0.9.rb +++ b/test/rss/test_setup_maker_0.9.rb @@ -138,7 +138,7 @@ module RSS assert_equal(link, textInput.link) end - def test_setup_maker_items + def test_setup_maker_items(for_backward_compatibility=false) title = "TITLE" link = "http://hoge.com/" description = "text hoge fuga" @@ -160,7 +160,11 @@ module RSS rss.channel.setup_maker(maker) rss.items.each do |item| - item.setup_maker(maker) + if for_backward_compatibility + item.setup_maker(maker) + else + item.setup_maker(maker.items) + end end end @@ -173,6 +177,10 @@ module RSS end + def test_setup_maker_items_backward_compatibility + test_setup_maker_items(true) + end + def test_setup_maker encoding = "EUC-JP" standalone = true diff --git a/test/rss/test_setup_maker_1.0.rb b/test/rss/test_setup_maker_1.0.rb index 244eee6114..cd0958afde 100644 --- a/test/rss/test_setup_maker_1.0.rb +++ b/test/rss/test_setup_maker_1.0.rb @@ -47,6 +47,25 @@ module RSS "http://foo.com/trackback/tb.cgi?tb_id=20021010", ], } + + @taxo_topic_elems = [ + { + :link => "http://meerkat.oreillynet.com/?c=cat23", + :title => "Data: XML", + :description => "A Meerkat channel", + }, + { + :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/", + :title => "XML", + :subject => "XML", + :description => "DMOZ category", + :topics => [ + "http://meerkat.oreillynet.com/?c=cat23", + "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/", + "http://dmoz.org/Computers/Programming/Internet/", + ] + }, + ] end def test_setup_maker_channel @@ -164,7 +183,7 @@ module RSS end end - def test_setup_maker_items + def test_setup_maker_items(for_backward_compatibility=false) title = "TITLE" link = "http://hoge.com/" description = "text hoge fuga" @@ -200,7 +219,11 @@ module RSS rss.channel.setup_maker(maker) rss.items.each do |item| - item.setup_maker(maker) + if for_backward_compatibility + item.setup_maker(maker) + else + item.setup_maker(maker.items) + end end end @@ -231,8 +254,8 @@ module RSS title = "TITLE" link = "http://hoge.com/" description = "text hoge fuga" - item_size = 5 + item_size = 5 rss = RSS::Maker.make("1.0") do |maker| setup_dummy_channel(maker) @@ -243,7 +266,7 @@ module RSS item.link = "#{link}#{i}" item.description = "#{description}#{i}" item.dc_date = Time.now + i * 60 - item.setup_maker(maker) + item.setup_maker(maker.items) end maker.items.do_sort = false end @@ -265,7 +288,7 @@ module RSS item.link = "#{link}#{i}" item.description = "#{description}#{i}" item.dc_date = Time.now + i * 60 - item.setup_maker(maker) + item.setup_maker(maker.items) end maker.items.do_sort = true end @@ -278,6 +301,10 @@ module RSS end end + def test_setup_maker_items_backward_compatibility + test_setup_maker_items(true) + end + def test_setup_maker encoding = "EUC-JP" standalone = true @@ -312,8 +339,8 @@ module RSS assert_equal(encoding, new_rss.encoding) assert_equal(standalone, new_rss.standalone) - xss = rss.xml_stylesheets.first - assert_equal(1, rss.xml_stylesheets.size) + xss = new_rss.xml_stylesheets.first + assert_equal(1, new_rss.xml_stylesheets.size) assert_equal(href, xss.href) assert_equal(type, xss.type) assert_equal(title, xss.title) @@ -321,6 +348,179 @@ module RSS assert_equal(charset, xss.charset) assert_equal(alternate, xss.alternate) end + + def test_setup_maker_full + encoding = "EUC-JP" + standalone = true + + href = 'a.xsl' + type = 'text/xsl' + title = 'sample' + media = 'printer' + charset = 'UTF-8' + alternate = 'yes' + + channel_about = "http://hoge.com" + channel_title = "fugafuga" + channel_link = "http://hoge.com" + channel_description = "fugafugafugafuga" + + image_title = "fugafuga" + image_url = "http://hoge.com/hoge.png" + + textinput_title = "fugafuga" + textinput_description = "text hoge fuga" + textinput_name = "hoge" + textinput_link = "http://hoge.com" + + item_title = "TITLE" + item_link = "http://hoge.com/" + item_description = "text hoge fuga" + + item_size = 5 + + rss = RSS::Maker.make("1.0") do |maker| + maker.encoding = encoding + maker.standalone = standalone + + xss = maker.xml_stylesheets.new_xml_stylesheet + xss.href = href + xss.type = type + xss.title = title + xss.media = media + xss.charset = charset + xss.alternate = alternate + + maker.channel.about = channel_about + maker.channel.title = channel_title + maker.channel.link = channel_link + maker.channel.description = channel_description + @dc_elems.each do |var, value| + maker.channel.__send__("dc_#{var}=", value) + end + @sy_elems.each do |var, value| + maker.channel.__send__("sy_#{var}=", value) + end + + maker.image.title = image_title + maker.image.url = image_url + @dc_elems.each do |var, value| + maker.image.__send__("dc_#{var}=", value) + end + + maker.textinput.link = textinput_link + maker.textinput.title = textinput_title + maker.textinput.description = textinput_description + maker.textinput.name = textinput_name + @dc_elems.each do |var, value| + maker.textinput.__send__("dc_#{var}=", value) + end + + item_size.times do |i| + item = maker.items.new_item + item.title = "#{item_title}#{i}" + item.link = "#{item_link}#{i}" + item.description = "#{item_description}#{i}" + + @dc_elems.each do |var, value| + item.__send__("dc_#{var}=", value) + end + + @content_elems.each do |var, value| + item.__send__("content_#{var}=", value) + end + + item.trackback_ping = @trackback_elems[:ping] + @trackback_elems[:about].each do |value| + new_about = item.trackback_abouts.new_about + new_about.value = value + end + end + + setup_taxo_topic(maker, @taxo_topic_elems) + end + + new_rss = RSS::Maker.make("1.0") do |maker| + rss.setup_maker(maker) + end + + assert_equal("1.0", new_rss.rss_version) + assert_equal(encoding, new_rss.encoding) + assert_equal(standalone, new_rss.standalone) + + xss = new_rss.xml_stylesheets.first + assert_equal(1, new_rss.xml_stylesheets.size) + assert_equal(href, xss.href) + assert_equal(type, xss.type) + assert_equal(title, xss.title) + assert_equal(media, xss.media) + assert_equal(charset, xss.charset) + assert_equal(alternate, xss.alternate) + + channel = new_rss.channel + assert_equal(channel_about, channel.about) + assert_equal(channel_title, channel.title) + assert_equal(channel_link, channel.link) + assert_equal(channel_description, channel.description) + item_resources = [] + item_size.times do |i| + item_resources << "#{item_link}#{i}" + end + assert_equal(item_resources, channel.items.resources) + assert_equal(image_url, channel.image.resource) + assert_equal(textinput_link, channel.textinput.resource) + @dc_elems.each do |var, value| + assert_equal(value, channel.__send__("dc_#{var}")) + end + @sy_elems.each do |var, value| + assert_equal(value, channel.__send__("sy_#{var}")) + end + + image = new_rss.image + assert_equal(image_url, image.about) + assert_equal(image_url, new_rss.channel.image.resource) + assert_equal(image_title, image.title) + assert_equal(channel_link, image.link) + assert_equal(image_url, image.url) + @dc_elems.each do |var, value| + assert_equal(image.__send__("dc_#{var}"), value) + end + + textinput = new_rss.textinput + assert_equal(textinput_link, textinput.about) + assert_equal(textinput_link, new_rss.channel.textinput.resource) + assert_equal(textinput_title, textinput.title) + assert_equal(textinput_name, textinput.name) + assert_equal(textinput_description, textinput.description) + assert_equal(textinput_link, textinput.link) + @dc_elems.each do |var, value| + assert_equal(textinput.__send__("dc_#{var}"), value) + end + + assert_equal(item_size, new_rss.items.size) + new_rss.items.each_with_index do |item, i| + assert_equal("#{item_link}#{i}", item.about) + assert_equal("#{item_title}#{i}", item.title) + assert_equal("#{item_link}#{i}", item.link) + assert_equal("#{item_description}#{i}", item.description) + + @dc_elems.each do |var, value| + assert_equal(item.__send__("dc_#{var}"), value) + end + + @content_elems.each do |var, value| + assert_equal(item.__send__("content_#{var}"), value) + end + + assert_equal(@trackback_elems[:ping], item.trackback_ping) + assert_equal(@trackback_elems[:about].size, item.trackback_abouts.size) + item.trackback_abouts.each_with_index do |about, i| + assert_equal(@trackback_elems[:about][i], about.value) + end + end + + assert_taxo_topic(@taxo_topic_elems, new_rss) + end end end diff --git a/test/rss/test_setup_maker_2.0.rb b/test/rss/test_setup_maker_2.0.rb index f28f837e43..6bf27d4682 100644 --- a/test/rss/test_setup_maker_2.0.rb +++ b/test/rss/test_setup_maker_2.0.rb @@ -162,7 +162,7 @@ module RSS assert_equal(link, textInput.link) end - def test_setup_maker_items + def test_setup_maker_items(for_backward_compatibility=false) title = "TITLE" link = "http://hoge.com/" description = "text hoge fuga" @@ -217,7 +217,11 @@ module RSS rss.channel.setup_maker(maker) rss.items.each do |item| - item.setup_maker(maker) + if for_backward_compatibility + item.setup_maker(maker) + else + item.setup_maker(maker.items) + end end end @@ -247,6 +251,10 @@ module RSS end + def test_setup_maker_items_backward_compatibility + test_setup_maker_items(true) + end + def test_setup_maker encoding = "EUC-JP" standalone = true |