Loading Changelog.md +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ * Allow fonts to be served from asset host in CSP [#7825](https://github.com/diaspora/diaspora/pull/7825) ## Features * Support fetching StatusMessage by Poll GUID [#7815](https://github.com/diaspora/diaspora/pull/7815) # 0.7.5.0 Loading app/models/poll.rb +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ class Poll < ApplicationRecord validate :enough_poll_answers validates :question, presence: true scope :all_public, -> { joins(:status_message).where(posts: {public: true}) } self.include_root_in_json = false def enough_poll_answers Loading config/initializers/diaspora_federation.rb +7 −2 Original line number Diff line number Diff line Loading @@ -117,8 +117,13 @@ DiasporaFederation.configure do |config| end on :fetch_public_entity do |entity_type, guid| entity = Diaspora::Federation::Mappings.model_class_for(entity_type).find_by(guid: guid, public: true) Diaspora::Federation::Entities.post(entity) if entity.is_a? Post entity = Diaspora::Federation::Mappings.model_class_for(entity_type).all_public.find_by(guid: guid) case entity when Post Diaspora::Federation::Entities.post(entity) when Poll Diaspora::Federation::Entities.status_message(entity.status_message) end end on :fetch_person_url_to do |diaspora_id, path| Loading spec/federation_callbacks_spec.rb +20 −0 Original line number Diff line number Diff line Loading @@ -430,6 +430,26 @@ describe "diaspora federation callbacks" do expect(entity.author).to eq(alice.diaspora_handle) end it "fetches a StatusMessage by a Poll guid" do post = FactoryGirl.create(:status_message, author: alice.person, public: true) poll = FactoryGirl.create(:poll, status_message: post) entity = DiasporaFederation.callbacks.trigger(:fetch_public_entity, "Poll", poll.guid) expect(entity.guid).to eq(post.guid) expect(entity.author).to eq(alice.diaspora_handle) expect(entity.public).to be_truthy expect(entity.poll.guid).to eq(poll.guid) expect(entity.poll.question).to eq(poll.question) end it "doesn't fetch a private StatusMessage by a Poll guid" do post = FactoryGirl.create(:status_message, author: alice.person, public: false) poll = FactoryGirl.create(:poll, status_message: post) expect( DiasporaFederation.callbacks.trigger(:fetch_public_entity, "Poll", poll.guid) ).to be_nil end it "does not fetch a private post" do post = FactoryGirl.create(:status_message, author: alice.person, public: false) Loading Loading
Changelog.md +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ * Allow fonts to be served from asset host in CSP [#7825](https://github.com/diaspora/diaspora/pull/7825) ## Features * Support fetching StatusMessage by Poll GUID [#7815](https://github.com/diaspora/diaspora/pull/7815) # 0.7.5.0 Loading
app/models/poll.rb +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ class Poll < ApplicationRecord validate :enough_poll_answers validates :question, presence: true scope :all_public, -> { joins(:status_message).where(posts: {public: true}) } self.include_root_in_json = false def enough_poll_answers Loading
config/initializers/diaspora_federation.rb +7 −2 Original line number Diff line number Diff line Loading @@ -117,8 +117,13 @@ DiasporaFederation.configure do |config| end on :fetch_public_entity do |entity_type, guid| entity = Diaspora::Federation::Mappings.model_class_for(entity_type).find_by(guid: guid, public: true) Diaspora::Federation::Entities.post(entity) if entity.is_a? Post entity = Diaspora::Federation::Mappings.model_class_for(entity_type).all_public.find_by(guid: guid) case entity when Post Diaspora::Federation::Entities.post(entity) when Poll Diaspora::Federation::Entities.status_message(entity.status_message) end end on :fetch_person_url_to do |diaspora_id, path| Loading
spec/federation_callbacks_spec.rb +20 −0 Original line number Diff line number Diff line Loading @@ -430,6 +430,26 @@ describe "diaspora federation callbacks" do expect(entity.author).to eq(alice.diaspora_handle) end it "fetches a StatusMessage by a Poll guid" do post = FactoryGirl.create(:status_message, author: alice.person, public: true) poll = FactoryGirl.create(:poll, status_message: post) entity = DiasporaFederation.callbacks.trigger(:fetch_public_entity, "Poll", poll.guid) expect(entity.guid).to eq(post.guid) expect(entity.author).to eq(alice.diaspora_handle) expect(entity.public).to be_truthy expect(entity.poll.guid).to eq(poll.guid) expect(entity.poll.question).to eq(poll.question) end it "doesn't fetch a private StatusMessage by a Poll guid" do post = FactoryGirl.create(:status_message, author: alice.person, public: false) poll = FactoryGirl.create(:poll, status_message: post) expect( DiasporaFederation.callbacks.trigger(:fetch_public_entity, "Poll", poll.guid) ).to be_nil end it "does not fetch a private post" do post = FactoryGirl.create(:status_message, author: alice.person, public: false) Loading