Commit 0925a265 authored by Manuel Vögele's avatar Manuel Vögele Committed by Jonne Haß

Do not add participation for comment if comment validation failed The same fix...

Do not add participation for comment if comment validation failed The same fix is also done for the other social actions

closes #6552
parent acb95479
......@@ -7,6 +7,7 @@
* Correctly skip setting sidekiq logfile on Heroku [#6500](https://github.com/diaspora/diaspora/pull/6500)
* Fix notifications for interactions by non-contacts [#6498](https://github.com/diaspora/diaspora/pull/6498)
* Fix issue where the publisher was broken on profile pages [#6503](https://github.com/diaspora/diaspora/pull/6503)
* Prevent participations being created for invalid interactions [#6552](https://github.com/diaspora/diaspora/pull/6552)
## Features
......
module User::SocialActions
def comment!(target, text, opts={})
find_or_create_participation!(target)
Comment::Generator.new(self, target, text).create!(opts)
Comment::Generator.new(self, target, text).create!(opts).tap do
find_or_create_participation!(target)
end
end
def participate!(target, opts={})
......@@ -9,21 +10,23 @@ module User::SocialActions
end
def like!(target, opts={})
find_or_create_participation!(target)
Like::Generator.new(self, target).create!(opts)
Like::Generator.new(self, target).create!(opts).tap do
find_or_create_participation!(target)
end
end
def participate_in_poll!(target, answer, opts={})
find_or_create_participation!(target)
PollParticipation::Generator.new(self, target, answer).create!(opts)
PollParticipation::Generator.new(self, target, answer).create!(opts).tap do
find_or_create_participation!(target)
end
end
def reshare!(target, opts={})
find_or_create_participation!(target)
reshare = build_post(:reshare, :root_guid => target.guid)
reshare.save!
Postzord::Dispatcher.defer_build_and_post(self, reshare)
reshare
build_post(:reshare, :root_guid => target.guid).tap do |reshare|
reshare.save!
find_or_create_participation!(target)
Postzord::Dispatcher.defer_build_and_post(self, reshare)
end
end
def build_comment(options={})
......
......@@ -57,6 +57,15 @@ describe Comment, :type => :model do
comment_alice
}.to change { Comment.count }.by(1)
end
it "does not create a participation if comment validation failed" do
begin
alice.comment!(status_bob, " ")
rescue ActiveRecord::RecordInvalid
end
participations = Participation.where(target_id: status_bob, author_id: alice.person.id)
expect(participations.count).to eq(0)
end
end
describe "counter cache" do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment