require File.join(File.dirname(__FILE__), '..', 'CONFIG.rb')
require 'test/unit'
require 'nitro/helper/feed'
class TC_FeedHelper < Test::Unit::TestCase # :nodoc: all
include Nitro
include FeedHelper
Blog = Struct.new(:title, :body, :to_href)
Blog2 = Struct.new(:title, :body, :to_href, :update_time)
# TODO: add more (all)
FullBlown = Struct.new(:title, :body, :full_content, :to_href, :update_time, :create_time, :author)
# RSS Testing
def test_rss
blogs = []
blogs << Blog.new('Hello1', 'World1', 'uri1');
blogs << Blog.new('Hello2', 'World2', 'uri2');
blogs << Blog.new('Hello3', 'World3', 'uri3');
blogs2 = []
updated = Time.now
blogs2 << Blog2.new('Hello1', 'World1', 'uri1', updated);
blogs2 << Blog2.new('Hello2', 'World2', 'uri2', updated);
blogs2 << Blog2.new('Hello3', 'World3', 'uri3', updated);
# rss without version (0.9)
rss = build_rss(blogs, :base => 'http://oxyliquit.de')
assert_match %r{http://oxyliquit.de/uri1}, rss
assert_match %r{http://oxyliquit.de/uri2}, rss
# rss 0.9
rss09 = build_rss(blogs, :version => "0.91", :link => 'http://oxyliquit.de')
assert_match %r{http://oxyliquit.de/uri1}, rss09
assert_match %r{http://oxyliquit.de/uri2}, rss09
# rss 1.0
rss10 = build_rss(blogs, :version => "1.0", :link => 'http://oxyliquit.de')
assert_match %r{http://oxyliquit.de/uri1}, rss10
assert_match %r{http://oxyliquit.de/uri2}, rss10
# rss 2.0
rss20 = build_rss(blogs2, :version => "2.0", :link => 'http://oxyliquit.de')
assert_match %r{http://oxyliquit.de/uri1}, rss20
assert_match %r{http://oxyliquit.de/uri2}, rss20
# rss full blown
rssfull = build_rss(blogs, :version => "0.9", :base => 'http://oxyliquit.de', :link => 'http://oxyliquit.de/feed', :title => "Oxyliquit feed", :language => 'en', :about => 'http://ox.li/about.rdf', :description => "Example feed of Oxyliquit", :search_title => "Oxyliquit search", :search_description => "Search through Oxyliqit", :search_input_name => "q", :search_form_action => "http://oxyliquit.de/search")
assert_match %r{http://oxyliquit.de/uri1}, rssfull
assert_match %r{http://oxyliquit.de/uri2}, rssfull
# TODO: there should be some more
# rss with full blown object
update_time = Time.now
create_time = Time.now - 360
author = Hash.new
author[:name] = "Bill"
author[:link] = "http://bills.url"
author[:email] = "bill@email.com"
fullblownobject = []
fullblownobject << FullBlown.new('Hello1', 'World1', 'Fullsize text with lots of words..', 'uri1', update_time, create_time, author)
fullblownobject << FullBlown.new('Hello2', 'World2', ' text with lots of words..', 'uri2', update_time, create_time, author)
rss_f_o = build_rss(fullblownobject, :version => "0.9", :base => 'http://oxyliquit.de', :link => 'http://oxyliquit.de/feed', :title => "Oxyliquit feed", :language => 'en', :about => 'http://ox.li/about.rdf', :description => "Example feed of Oxyliquit", :search_title => "Oxyliquit search", :search_description => "Search through Oxyliqit", :search_input_name => "q", :search_form_action => "http://oxyliquit.de/search")
assert_match %r{http://oxyliquit.de/uri1}, rss_f_o
assert_match %r{http://oxyliquit.de/uri2}, rss_f_o
# rss with wrong version
assert_raise(RuntimeError) do
build_rss(blogs, :version => "0.5", :link => 'http://oxyliquit.de')
end
end # test_rss
# Atom Testing
def test_atom
blogs = []
updated = Time.now
blogs << Blog2.new('Hello1', 'World1', 'uri1', updated);
blogs << Blog2.new('Hello2', 'World2', 'uri2', updated);
blogs << Blog2.new('Hello3', 'World3', 'uri3', updated);
# atom small
atom = build_atom(blogs, :base => 'http://oxyliquit.de')
assert_match %r{