|
|
Index: test/functional/feed_controller_test.rb
===================================================================
--- test/functional/feed_controller_test.rb (revision 2878)
+++ test/functional/feed_controller_test.rb (working copy)
@@ -5,14 +5,22 @@
class FeedController; def rescue_action(e) raise e end; end
class FeedControllerTest < Test::Unit::TestCase
- fixtures :contents, :sections, :assigned_sections, :sites
+ fixtures :contents, :sections, :assigned_sections, :sites, :users
def setup
@controller = FeedController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
-
+
+ def test_feed_has_namespaces
+ get :feed, :sections =>[]
+ # can't do feed[xmlns:thr]
+ assert_select 'feed', 1 do |feed|
+ assert_equal 'http://www.w3.org/2005/Atom', feed[0]['xmlns']
+ assert_equal 'http://purl.org/syndication/thread/1.0', feed[0]['xmlns:thr']
+ end
+ end
def test_feed_comes_from_site
host! 'cupcake.com'
get :feed, :sections => ['about']
@@ -78,12 +86,20 @@
specify "should show correct links" do
assert_select 'feed>link[href=?][type=?]', 'http://test.host/about', 'text/html'
- assert_select 'feed>entry>link[href]', 4 do |hrefs|
+ assert_select 'feed>entry>link[href][rel=alternate]', 3 do |hrefs|
assert_equal "http://test.host/about", hrefs[0]['href']
- assert_match /asset\.mp3$/, hrefs[1]['href']
- assert_equal "http://test.host/about/about-this-page", hrefs[2]['href']
- assert_equal "http://test.host/about/the-site-map", hrefs[3]['href']
+ assert_equal "http://test.host/about/about-this-page", hrefs[1]['href']
+ assert_equal "http://test.host/about/the-site-map", hrefs[2]['href']
end
+ assert_select 'feed>entry>link[href][rel=enclosure]', 1 do |hrefs|
+ assert_match /asset\.mp3$/, hrefs[0]['href']
+ end
+ assert_select 'feed>entry>link[href][rel=replies]' , 3 do |hrefs|
+ assert_equal "http://test.host/about#comments", hrefs[0]['href']
+ assert_equal "http://test.host/about/about-this-page#comments", hrefs[1]['href']
+ assert_equal "http://test.host/about/the-site-map#comments", hrefs[2]['href']
+ end
+
end
end
@@ -107,10 +123,16 @@
specify "should show correct links" do
assert_select 'feed>link[href=?][type=?]', 'http://test.host/', 'text/html'
- assert_select 'feed>entry>link[href]', 3 do |hrefs|
+ assert_select 'feed>entry>link[href][rel=enclosure]', 1 do |hrefs|
+ assert_match /asset\.mp3$/, hrefs[0]['href']
+ end
+ assert_select 'feed>entry>link[href][rel=replies]', 2 do |hrefs|
+ assert_match /\/welcome-to-mephisto#comments$/,hrefs[0]['href']
+ assert_match /\/another-welcome-to-mephisto#comments$/, hrefs[1]['href']
+ end
+ assert_select 'feed>entry>link[href][rel=alternate]', 2 do |hrefs|
assert_match /\/welcome-to-mephisto$/, hrefs[0]['href']
- assert_match /asset\.mp3$/, hrefs[1]['href']
- assert_match /\/another-welcome-to-mephisto$/, hrefs[2]['href']
+ assert_match /\/another-welcome-to-mephisto$/, hrefs[1]['href']
end
end
@@ -143,4 +165,4 @@
assert !text.ends_with(CGI::escapeHTML(evil)), "'#{text.inspect}' was not sanitized"
assert text.ends_with(CGI::escapeHTML(good)), "'#{text.inspect}' was not sanitized"
end
-end
\ No newline at end of file
+end
Index: app/views/feed/_article.rxml
===================================================================
--- app/views/feed/_article.rxml (revision 2878)
+++ app/views/feed/_article.rxml (working copy)
@@ -11,8 +11,13 @@
article.tags.each do |tag|
xm.category "term" => tag.name
end
+ url = "http://#{request.host_with_port}#{request.relative_url_root}#{section_url_for article}"
+
xm.link "rel" => "alternate", "type" => "text/html",
- "href" => "http://#{request.host_with_port}#{request.relative_url_root}#{section_url_for article}"
+ "href" => url
+ xm.link "rel" => "replies", "type" => "text/html",
+ "href" => url+'#comments',
+ "thr:count" => article.comments.size.to_s
xm.title strip_tags(article.title)
unless article.excerpt_html.blank?
xm << %{#{sanitize_feed_content article.excerpt_html}}
@@ -20,7 +25,7 @@
unless article.body_html.blank?
xm << %{
#{sanitize_feed_content [article.excerpt_html, article.body_html].compact * "\n"}
- }
+ \n}
end
article.add_xml(xm)
-end
\ No newline at end of file
+end
Index: app/views/feed/feed.rxml
===================================================================
--- app/views/feed/feed.rxml (revision 2878)
+++ app/views/feed/feed.rxml (working copy)
@@ -1,6 +1,8 @@
xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
-xml.feed "xml:lang" => "en-US", "xmlns" => 'http://www.w3.org/2005/Atom' do
+xml.feed "xml:lang" => "en-US",
+ "xmlns" => 'http://www.w3.org/2005/Atom',
+ "xmlns:thr" => "http://purl.org/syndication/thread/1.0" do
xml.title "#{site.title || 'Mephisto'} - #{@section ? @section.name : 'All'}#{' Comments' if @comments && @articles.nil?}"
xml.id "tag:#{request.host},#{Time.now.utc.year}:mephisto#{"/#{@section.path}" if @section}#{ '/comments' if @comments && @articles.nil?}"
xml.generator "Mephisto #{Mephisto::Version::TITLE}", :uri => "http://mephistoblog.com", :version => "#{Mephisto::Version::STRING}"
|