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
281
test/rss/test_atom.rb
Normal file
281
test/rss/test_atom.rb
Normal file
|
@ -0,0 +1,281 @@
|
|||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/atom"
|
||||
|
||||
module RSS
|
||||
class TestAtomCore < TestCase
|
||||
def setup
|
||||
@uri = "http://www.w3.org/2005/Atom"
|
||||
@xhtml_uri = "http://www.w3.org/1999/xhtml"
|
||||
end
|
||||
|
||||
def test_feed
|
||||
version = "1.0"
|
||||
encoding = "UTF-8"
|
||||
standalone = false
|
||||
|
||||
feed = Atom::Feed.new(version, encoding, standalone)
|
||||
assert_equal("", feed.to_s)
|
||||
|
||||
author = feed.class::Author.new
|
||||
name = feed.class::Author::Name.new
|
||||
name.content = "an author"
|
||||
author.name = name
|
||||
assert_not_equal("", author.to_s)
|
||||
feed.authors << author
|
||||
assert_equal("", feed.to_s)
|
||||
|
||||
id = feed.class::Id.new
|
||||
id.content = "http://example.com/atom.xml"
|
||||
assert_not_equal("", id.to_s)
|
||||
feed.id = id
|
||||
assert_equal("", feed.to_s)
|
||||
|
||||
title = feed.class::Title.new
|
||||
title.content = "a title"
|
||||
assert_not_equal("", title.to_s)
|
||||
feed.title = title
|
||||
assert_equal("", feed.to_s)
|
||||
|
||||
updated = feed.class::Updated.new
|
||||
updated.content = Time.now
|
||||
assert_not_equal("", updated.to_s)
|
||||
feed.updated = updated
|
||||
assert_not_equal("", feed.to_s)
|
||||
|
||||
|
||||
feed.authors.clear
|
||||
assert_equal("", feed.to_s)
|
||||
entry = Atom::Feed::Entry.new
|
||||
setup_entry(entry)
|
||||
assert_not_equal("", entry.to_s)
|
||||
|
||||
author = entry.authors.first
|
||||
entry.authors.clear
|
||||
assert_equal("", entry.to_s)
|
||||
entry.parent = feed
|
||||
assert_equal("", entry.to_s)
|
||||
feed.authors << author
|
||||
assert_not_equal("", entry.to_s)
|
||||
feed.authors.clear
|
||||
feed.entries << entry
|
||||
assert_equal("", feed.to_s)
|
||||
entry.authors << author
|
||||
assert_not_equal("", entry.to_s)
|
||||
assert_not_equal("", feed.to_s)
|
||||
|
||||
doc = REXML::Document.new(feed.to_s)
|
||||
xmldecl = doc.xml_decl
|
||||
|
||||
%w(version encoding).each do |x|
|
||||
assert_equal(instance_eval(x), xmldecl.__send__(x))
|
||||
end
|
||||
assert_equal(standalone, !xmldecl.standalone.nil?)
|
||||
|
||||
assert_equal(@uri, doc.root.namespace)
|
||||
end
|
||||
|
||||
def test_entry
|
||||
version = "1.0"
|
||||
encoding = "UTF-8"
|
||||
standalone = false
|
||||
|
||||
entry = Atom::Entry.new(version, encoding, standalone)
|
||||
setup_entry(entry)
|
||||
|
||||
author = entry.authors.first
|
||||
entry.authors.clear
|
||||
assert_equal("", entry.to_s)
|
||||
source = Atom::Entry::Source.new
|
||||
source.authors << author
|
||||
entry.source = source
|
||||
assert_not_equal("", entry.to_s)
|
||||
|
||||
doc = REXML::Document.new(entry.to_s)
|
||||
xmldecl = doc.xml_decl
|
||||
|
||||
%w(version encoding).each do |x|
|
||||
assert_equal(instance_eval(x), xmldecl.__send__(x))
|
||||
end
|
||||
assert_equal(standalone, !xmldecl.standalone.nil?)
|
||||
|
||||
assert_equal(@uri, doc.root.namespace)
|
||||
end
|
||||
|
||||
def test_not_displayed_xml_stylesheets
|
||||
feed = Atom::Feed.new
|
||||
plain_feed = feed.to_s
|
||||
3.times do
|
||||
feed.xml_stylesheets.push(XMLStyleSheet.new)
|
||||
assert_equal(plain_feed, feed.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
def test_atom_author
|
||||
assert_atom_person_to_s(Atom::Feed::Author)
|
||||
assert_atom_person_to_s(Atom::Feed::Entry::Author)
|
||||
assert_atom_person_to_s(Atom::Entry::Author)
|
||||
assert_atom_person_to_s(Atom::Feed::Entry::Source::Author)
|
||||
assert_atom_person_to_s(Atom::Entry::Source::Author)
|
||||
end
|
||||
|
||||
def test_atom_category
|
||||
assert_atom_category_to_s(Atom::Feed::Category)
|
||||
assert_atom_category_to_s(Atom::Feed::Entry::Category)
|
||||
assert_atom_category_to_s(Atom::Entry::Category)
|
||||
assert_atom_category_to_s(Atom::Feed::Entry::Source::Category)
|
||||
assert_atom_category_to_s(Atom::Entry::Source::Category)
|
||||
end
|
||||
|
||||
def test_atom_contributor
|
||||
assert_atom_person_to_s(Atom::Feed::Contributor)
|
||||
assert_atom_person_to_s(Atom::Feed::Entry::Contributor)
|
||||
assert_atom_person_to_s(Atom::Entry::Contributor)
|
||||
assert_atom_person_to_s(Atom::Feed::Entry::Source::Contributor)
|
||||
assert_atom_person_to_s(Atom::Entry::Source::Contributor)
|
||||
end
|
||||
|
||||
def test_atom_generator
|
||||
assert_atom_generator_to_s(Atom::Feed::Generator)
|
||||
assert_atom_generator_to_s(Atom::Feed::Entry::Source::Generator)
|
||||
assert_atom_generator_to_s(Atom::Entry::Source::Generator)
|
||||
end
|
||||
|
||||
def test_atom_icon
|
||||
assert_atom_icon_to_s(Atom::Feed::Icon)
|
||||
assert_atom_icon_to_s(Atom::Feed::Entry::Source::Icon)
|
||||
assert_atom_icon_to_s(Atom::Entry::Source::Icon)
|
||||
end
|
||||
|
||||
def test_atom_id
|
||||
assert_atom_id_to_s(Atom::Feed::Id)
|
||||
assert_atom_id_to_s(Atom::Feed::Entry::Id)
|
||||
assert_atom_id_to_s(Atom::Entry::Id)
|
||||
assert_atom_id_to_s(Atom::Feed::Entry::Source::Id)
|
||||
assert_atom_id_to_s(Atom::Entry::Source::Id)
|
||||
end
|
||||
|
||||
def test_atom_link
|
||||
assert_atom_link_to_s(Atom::Feed::Link)
|
||||
assert_atom_link_to_s(Atom::Feed::Entry::Link)
|
||||
assert_atom_link_to_s(Atom::Entry::Link)
|
||||
assert_atom_link_to_s(Atom::Feed::Entry::Source::Link)
|
||||
assert_atom_link_to_s(Atom::Entry::Source::Link)
|
||||
end
|
||||
|
||||
def test_atom_logo
|
||||
assert_atom_logo_to_s(Atom::Feed::Logo)
|
||||
assert_atom_logo_to_s(Atom::Feed::Entry::Source::Logo)
|
||||
assert_atom_logo_to_s(Atom::Entry::Source::Logo)
|
||||
end
|
||||
|
||||
def test_atom_rights
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Rights)
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Rights)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Rights)
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Rights)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Source::Rights)
|
||||
end
|
||||
|
||||
def test_atom_subtitle
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Subtitle)
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Subtitle)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Source::Subtitle)
|
||||
end
|
||||
|
||||
def test_atom_title
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Title)
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Title)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Title)
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Title)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Source::Title)
|
||||
end
|
||||
|
||||
def test_atom_updated
|
||||
assert_atom_date_construct_to_s(Atom::Feed::Updated)
|
||||
assert_atom_date_construct_to_s(Atom::Feed::Entry::Updated)
|
||||
assert_atom_date_construct_to_s(Atom::Entry::Updated)
|
||||
assert_atom_date_construct_to_s(Atom::Feed::Entry::Source::Updated)
|
||||
assert_atom_date_construct_to_s(Atom::Entry::Source::Updated)
|
||||
end
|
||||
|
||||
def test_atom_content
|
||||
assert_atom_content_to_s(Atom::Feed::Entry::Content)
|
||||
assert_atom_content_to_s(Atom::Entry::Content)
|
||||
end
|
||||
|
||||
def test_atom_published
|
||||
assert_atom_date_construct_to_s(Atom::Feed::Entry::Published)
|
||||
assert_atom_date_construct_to_s(Atom::Entry::Published)
|
||||
end
|
||||
|
||||
def test_atom_summary
|
||||
assert_atom_text_construct_to_s(Atom::Feed::Entry::Summary)
|
||||
assert_atom_text_construct_to_s(Atom::Entry::Summary)
|
||||
end
|
||||
|
||||
|
||||
def test_to_xml
|
||||
atom = RSS::Parser.parse(make_feed)
|
||||
assert_equal(atom.to_s, atom.to_xml)
|
||||
assert_equal(atom.to_s, atom.to_xml("atom"))
|
||||
assert_equal(atom.to_s, atom.to_xml("atom1.0"))
|
||||
assert_equal(atom.to_s, atom.to_xml("atom1.0:feed"))
|
||||
assert_equal(atom.to_s, atom.to_xml("atom:feed"))
|
||||
|
||||
rss09_xml = atom.to_xml("0.91") do |maker|
|
||||
maker.channel.language = "en-us"
|
||||
maker.channel.link = "http://example.com/"
|
||||
maker.channel.description.content = atom.title.content
|
||||
|
||||
maker.image.url = "http://example.com/logo.png"
|
||||
maker.image.title = "Logo"
|
||||
end
|
||||
rss09 = RSS::Parser.parse(rss09_xml)
|
||||
assert_equal(["rss", "0.91", nil], rss09.feed_info)
|
||||
|
||||
rss20_xml = atom.to_xml("2.0") do |maker|
|
||||
maker.channel.link = "http://example.com/"
|
||||
maker.channel.description.content = atom.title.content
|
||||
end
|
||||
rss20 = RSS::Parser.parse(rss20_xml)
|
||||
assert_equal("2.0", rss20.rss_version)
|
||||
assert_equal(["rss", "2.0", nil], rss20.feed_info)
|
||||
end
|
||||
|
||||
private
|
||||
def setup_entry(entry)
|
||||
_wrap_assertion do
|
||||
assert_equal("", entry.to_s)
|
||||
|
||||
author = entry.class::Author.new
|
||||
name = entry.class::Author::Name.new
|
||||
name.content = "an author"
|
||||
author.name = name
|
||||
assert_not_equal("", author.to_s)
|
||||
entry.authors << author
|
||||
assert_equal("", entry.to_s)
|
||||
|
||||
id = entry.class::Id.new
|
||||
id.content = "http://example.com/atom.xml"
|
||||
assert_not_equal("", id.to_s)
|
||||
entry.id = id
|
||||
assert_equal("", entry.to_s)
|
||||
|
||||
title = entry.class::Title.new
|
||||
title.content = "a title"
|
||||
assert_not_equal("", title.to_s)
|
||||
entry.title = title
|
||||
assert_equal("", entry.to_s)
|
||||
|
||||
updated = entry.class::Updated.new
|
||||
updated.content = Time.now
|
||||
assert_not_equal("", updated.to_s)
|
||||
entry.updated = updated
|
||||
assert_not_equal("", entry.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue