diff --git a/Changelog.md b/Changelog.md index 80ae85b39..1f1f465a4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -20,6 +20,7 @@ * Fix active user statistics by saving a last seen timestamp for users [#4734](https://github.com/diaspora/diaspora/issues/4734) * Render HTML in atom user feed [#4835](https://github.com/diaspora/diaspora/pull/4835) * Fix plaintext mode of Mentionable [#4294](https://github.com/diaspora/diaspora/issues/4294) +* Fixed Atom Feed Error if reshared Post is deleted [#4638] (https://github.com/diaspora/diaspora/issues/4638) ## Features * You can report a single post by clicking the correct icon in the controler section [#4517](https://github.com/diaspora/diaspora/pull/4517) diff --git a/app/views/users/public.atom.builder b/app/views/users/public.atom.builder index 2f09148fa..90cbb1422 100644 --- a/app/views/users/public.atom.builder +++ b/app/views/users/public.atom.builder @@ -26,9 +26,8 @@ atom_feed({'xmlns:thr' => 'http://purl.org/syndication/thread/1.0', author.tag! 'poco:displayName', @user.name end - @posts.each do |post| - post = post.absolute_root if post.is_a? Reshare + post = post.absolute_root unless post.absolute_root.nil? if post.is_a? Reshare feed.entry post, :url => "#{@user.url}p/#{post.id}", :id => "#{@user.url}p/#{post.id}" do |entry| diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 551e1d7e1..61ac792fc 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -53,13 +53,21 @@ describe UsersController do get :public, :username => @user.username, :format => :atom response.body.should include('a href') end - + it 'includes reshares in the atom feed' do reshare = FactoryGirl.create(:reshare, :author => @user.person) get :public, :username => @user.username, :format => :atom response.body.should include reshare.root.raw_message end + it 'do not show reshares in atom feed if origin post is deleted' do + post = FactoryGirl.create(:status_message, :public => true); + reshare = FactoryGirl.create(:reshare, :root => post, :author => @user.person) + post.delete + get :public, :username => @user.username, :format => :atom + response.code.should == '200' + end + it 'redirects to a profile page if html is requested' do get :public, :username => @user.username response.should be_redirect