From b3013c8152364fc673e100c864bfe61511572bd8 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 22 Aug 2016 00:17:09 +0200 Subject: [PATCH 1/2] bump diaspora_federation --- Gemfile | 4 ++-- Gemfile.lock | 14 +++++++------- app/workers/receive_base.rb | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 6df2cfe69..66efbfd37 100644 --- a/Gemfile +++ b/Gemfile @@ -13,7 +13,7 @@ gem "unicorn-worker-killer", "0.4.4" # Federation -gem "diaspora_federation-rails", "0.1.3" +gem "diaspora_federation-rails", "0.1.4" # API and JSON @@ -287,7 +287,7 @@ group :test do gem "webmock", "2.1.0", require: false gem "shoulda-matchers", "3.1.1" - gem "diaspora_federation-test", "0.1.3" + gem "diaspora_federation-test", "0.1.4" # Coverage gem 'coveralls', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 577595f56..b8906af72 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -177,17 +177,17 @@ GEM devise rails (>= 3.0.4) diaspora-prosody-config (0.0.5) - diaspora_federation (0.1.3) + diaspora_federation (0.1.4) faraday (~> 0.9.0) faraday_middleware (~> 0.10.0) nokogiri (~> 1.6, >= 1.6.8) typhoeus (~> 1.0) valid (~> 1.0) - diaspora_federation-rails (0.1.3) - diaspora_federation (= 0.1.3) + diaspora_federation-rails (0.1.4) + diaspora_federation (= 0.1.4) rails (~> 4.2) - diaspora_federation-test (0.1.3) - diaspora_federation (= 0.1.3) + diaspora_federation-test (0.1.4) + diaspora_federation (= 0.1.4) factory_girl (~> 4.7) diff-lcs (1.2.5) docile (1.1.5) @@ -934,8 +934,8 @@ DEPENDENCIES devise-token_authenticatable (= 0.5.2) devise_lastseenable (= 0.0.6) diaspora-prosody-config (= 0.0.5) - diaspora_federation-rails (= 0.1.3) - diaspora_federation-test (= 0.1.3) + diaspora_federation-rails (= 0.1.4) + diaspora_federation-test (= 0.1.4) entypo-rails (= 3.0.0.pre.rc2) eye (= 0.8.1) factory_girl_rails (= 4.7.0) diff --git a/app/workers/receive_base.rb b/app/workers/receive_base.rb index 15c691d69..aab2082e4 100644 --- a/app/workers/receive_base.rb +++ b/app/workers/receive_base.rb @@ -18,6 +18,7 @@ module Workers DiasporaFederation::Salmon::SenderKeyNotFound, DiasporaFederation::Salmon::InvalidEnvelope, DiasporaFederation::Salmon::InvalidSignature, + DiasporaFederation::Salmon::InvalidDataType, DiasporaFederation::Salmon::InvalidAlgorithm, DiasporaFederation::Salmon::InvalidEncoding, Diaspora::Federation::AuthorIgnored, From 4b020b8d61e85ca1b1689971015e8c184a99d0b0 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 22 Aug 2016 00:43:43 +0200 Subject: [PATCH 2/2] Fix regressions from #6998 * fixed old reshares of reshares * fixed deleted root of a reshare --- app/presenters/post_presenter.rb | 9 +++-- spec/presenters/post_presenter_spec.rb | 46 +++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 9045f339b..ba1609c8a 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -20,7 +20,7 @@ class PostPresenter < BasePresenter description: {name: "description", content: description}, og_url: {property: "og:url", content: url}, og_title: {property: "og:title", content: title}, - og_image: {property: "og:image", content: images}, + og_image: {property: "og:image", content: images}, og_description: {property: "og:description", content: description}, og_article_tag: {property: "og:article:tag", content: tags}, og_article_author: {property: "og:article:author", content: author_name}, @@ -138,9 +138,8 @@ class PostPresenter < BasePresenter end def tags - tags = @post.is_a?(Reshare) ? @post.root.tags : @post.tags - return tags.map(&:name) if tags - [] + tags = @post.is_a?(Reshare) ? @post.absolute_root.try(:tags) : @post.tags + tags ? tags.map(&:name) : [] end def comma_separated_tags @@ -152,6 +151,6 @@ class PostPresenter < BasePresenter end def description - message.plain_text_without_markdown(truncate: 1000) + message.try(:plain_text_without_markdown, truncate: 1000) end end diff --git a/spec/presenters/post_presenter_spec.rb b/spec/presenters/post_presenter_spec.rb index 07a4b2d84..5c9c52728 100644 --- a/spec/presenters/post_presenter_spec.rb +++ b/spec/presenters/post_presenter_spec.rb @@ -75,7 +75,7 @@ describe PostPresenter do end context "with posts without text" do - it " displays a messaage with the post class" do + it "displays a messaage with the post class" do @sm = double(message: double(present?: false), author: bob.person, author_name: bob.person.name) @presenter.post = @sm expect(@presenter.send(:title)).to eq("A post from #{@sm.author.name}") @@ -89,4 +89,48 @@ describe PostPresenter do expect(presenter.as_json).to be_a(Hash) end end + + describe "#tags" do + it "returns the tag of the post" do + post = FactoryGirl.create(:status_message, text: "#hello #world", public: true) + + expect(PostPresenter.new(post).send(:tags)).to match_array(%w(hello world)) + end + + it "returns the tag of the absolute_root of a Reshare" do + post = FactoryGirl.create(:status_message, text: "#hello #world", public: true) + first_reshare = FactoryGirl.create(:reshare, root: post) + second_reshare = FactoryGirl.create(:reshare, root: first_reshare) + + expect(PostPresenter.new(second_reshare).send(:tags)).to match_array(%w(hello world)) + end + + it "does not raise if the root of a reshare does not exist anymore" do + reshare = FactoryGirl.create(:reshare) + reshare.root = nil + + expect(PostPresenter.new(reshare).send(:tags)).to eq([]) + end + end + + describe "#description" do + it "returns the first 1000 chars of the text" do + post = FactoryGirl.create(:status_message, text: "a" * 1001, public: true) + + expect(PostPresenter.new(post).send(:description)).to eq("#{'a' * 997}...") + end + + it "does not change the message if less or equal 1000 chars" do + post = FactoryGirl.create(:status_message, text: "a" * 1000, public: true) + + expect(PostPresenter.new(post).send(:description)).to eq("a" * 1000) + end + + it "does not raise if the root of a reshare does not exist anymore" do + reshare = FactoryGirl.create(:reshare) + reshare.root = nil + + expect(PostPresenter.new(reshare).send(:description)).to eq(nil) + end + end end