mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rss, test/rss:
- supported Atom. - bumped version 0.1.6 to 0.1.7. * sample/rss/convert.rb: added new sample. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
53cbab0484
commit
966a25465a
71 changed files with 10254 additions and 3045 deletions
122
test/rss/test_parser_2.0.rb
Normal file
122
test/rss/test_parser_2.0.rb
Normal file
|
@ -0,0 +1,122 @@
|
|||
require "rss-testcase"
|
||||
|
||||
require "rss/2.0"
|
||||
|
||||
module RSS
|
||||
class TestParser20 < TestCase
|
||||
def test_rss20
|
||||
assert_parse(make_rss20(<<-EOR), :missing_tag, "channel", "rss")
|
||||
EOR
|
||||
|
||||
assert_parse(make_rss20(<<-EOR), :nothing_raised)
|
||||
#{make_channel20("")}
|
||||
EOR
|
||||
end
|
||||
|
||||
def test_cloud20
|
||||
attrs = [
|
||||
["domain", CLOUD_DOMAIN],
|
||||
["port", CLOUD_PORT],
|
||||
["path", CLOUD_PATH],
|
||||
["registerProcedure", CLOUD_REGISTER_PROCEDURE],
|
||||
["protocol", CLOUD_PROTOCOL],
|
||||
]
|
||||
|
||||
(attrs.size + 1).times do |i|
|
||||
missing_attr = attrs[i]
|
||||
if missing_attr
|
||||
meth = :missing_attribute
|
||||
args = ["cloud", missing_attr[0]]
|
||||
else
|
||||
meth = :nothing_raised
|
||||
args = []
|
||||
end
|
||||
|
||||
cloud_attrs = []
|
||||
attrs.each_with_index do |attr, j|
|
||||
unless i == j
|
||||
cloud_attrs << %Q[#{attr[0]}="#{attr[1]}"]
|
||||
end
|
||||
end
|
||||
|
||||
assert_parse(make_rss20(<<-EOR), meth, *args)
|
||||
#{make_channel20(%Q[<cloud #{cloud_attrs.join("\n")}/>])}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
def test_source20
|
||||
assert_parse(make_rss20(<<-EOR), :missing_attribute, "source", "url")
|
||||
#{make_channel20(make_item20(%Q[<source>Example</source>]))}
|
||||
EOR
|
||||
|
||||
assert_parse(make_rss20(<<-EOR), :nothing_raised)
|
||||
#{make_channel20(make_item20(%Q[<source url="http://example.com/" />]))}
|
||||
EOR
|
||||
|
||||
assert_parse(make_rss20(<<-EOR), :nothing_raised)
|
||||
#{make_channel20(make_item20(%Q[<source url="http://example.com/">Example</source>]))}
|
||||
EOR
|
||||
end
|
||||
|
||||
def test_enclosure20
|
||||
attrs = [
|
||||
["url", ENCLOSURE_URL],
|
||||
["length", ENCLOSURE_LENGTH],
|
||||
["type", ENCLOSURE_TYPE],
|
||||
]
|
||||
|
||||
(attrs.size + 1).times do |i|
|
||||
missing_attr = attrs[i]
|
||||
if missing_attr
|
||||
meth = :missing_attribute
|
||||
args = ["enclosure", missing_attr[0]]
|
||||
else
|
||||
meth = :nothing_raised
|
||||
args = []
|
||||
end
|
||||
|
||||
enclosure_attrs = []
|
||||
attrs.each_with_index do |attr, j|
|
||||
unless i == j
|
||||
enclosure_attrs << %Q[#{attr[0]}="#{attr[1]}"]
|
||||
end
|
||||
end
|
||||
|
||||
assert_parse(make_rss20(<<-EOR), meth, *args)
|
||||
#{make_channel20(%Q[
|
||||
#{make_item20(%Q[
|
||||
<enclosure
|
||||
#{enclosure_attrs.join("\n")} />
|
||||
])}
|
||||
])}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
def test_category20
|
||||
values = [nil, CATEGORY_DOMAIN]
|
||||
values.each do |value|
|
||||
domain = ""
|
||||
domain << %Q[domain="#{value}"] if value
|
||||
|
||||
["", "Example Text"].each do |text|
|
||||
rss_src = make_rss20(<<-EOR)
|
||||
#{make_channel20(%Q[
|
||||
#{make_item20(%Q[
|
||||
<category #{domain}>#{text}</category>
|
||||
])}
|
||||
])}
|
||||
EOR
|
||||
assert_parse(rss_src, :nothing_raised)
|
||||
|
||||
rss = RSS::Parser.parse(rss_src)
|
||||
category = rss.items.last.categories.first
|
||||
assert_equal(value, category.domain)
|
||||
assert_equal(text, category.content)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue