diff --git a/Changelog.md b/Changelog.md index 80ae85b3988f48637bf6879fa35c3ae983dabd7a..1f1f465a41c1f733c3ae28a2138348f983e67ef8 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 2f09148fa60c459fbc3f56610cb29c5e11d6a2fd..90cbb1422c8f722c528f3fe53636ad224bdb578f 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 551e1d7e160532d6836e56abdba36af9fb51e1e6..61ac792fcec91e2a58bcbacff6f08d5d01fa1ae2 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