require "cgi" require "rexml/document" require "rss-testcase" require "rss/1.0" require "rss/content" module RSS class TestContent < TestCase def setup @prefix = "content" @uri = "http://purl.org/rss/1.0/modules/content/" @parents = %w(item) @elems = { :encoded => "ATTENTION", } @content_nodes = @elems.collect do |name, value| "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}" end.join("\n") @rss_source = make_RDF(<<-EOR, {@prefix => @uri}) #{make_channel()} #{make_image()} #{make_item(@content_nodes)} #{make_textinput()} EOR @rss = Parser.parse(@rss_source) end def test_parser assert_nothing_raised do Parser.parse(@rss_source) end @elems.each do |tag, value| assert_too_much_tag(tag.to_s, "item") do Parser.parse(make_RDF(<<-EOR, {@prefix => @uri})) #{make_channel()} #{make_item(("<" + @prefix + ":" + tag.to_s + ">" + CGI.escapeHTML(value.to_s) + "") * 2)} EOR end end end def test_accessor new_value = { :encoded => "hoge]]>", } @elems.each do |name, value| @parents.each do |parent| meth = "#{RSS::CONTENT_PREFIX}_#{name}" assert_equal(value, @rss.__send__(parent).__send__(meth)) @rss.__send__(parent).__send__("#{meth}=", new_value[name].to_s) assert_equal(new_value[name], @rss.__send__(parent).__send__(meth)) end end end def test_to_s @elems.each do |name, value| excepted = "<#{@prefix}:#{name}>#{CGI.escapeHTML(value)}" @parents.each do |parent| meth = "#{RSS::CONTENT_PREFIX}_#{name}_element" assert_equal(excepted, @rss.__send__(parent).__send__(meth)) end end REXML::Document.new(@rss_source).root.each_element do |parent| if @parents.include?(parent.name) parent.each_element do |elem| if elem.namespace == @uri assert_equal(elem.text, @elems[elem.name.intern].to_s) end end end end end end end