From 2c7848e3cbcb072e91d8faa652cc6cc9d14f1d97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= <me@jhass.eu> Date: Mon, 4 May 2015 00:36:27 +0200 Subject: [PATCH] Revert "Merge pull request #5852 from margori/3393-activity-stream-keeping-retracted-participations" This reverts commit 096fa2ddbbd2a178c91e17be2534bbf23439f8ad, reversing changes made to f7d1105148d44f5474a2702476c5104bab779be6. --- Changelog.md | 1 - app/models/comment.rb | 2 - app/models/like.rb | 2 - app/models/participation.rb | 8 -- app/models/user.rb | 8 +- app/models/user/social_actions.rb | 17 +-- .../20150404193023_participation_counter.rb | 29 ----- db/schema.rb | 9 +- features/desktop/activity_stream.feature | 104 ------------------ features/step_definitions/stream_steps.rb | 4 - .../status_messages_controller_spec.rb | 7 -- spec/models/comment_spec.rb | 23 ---- spec/models/like_spec.rb | 17 --- spec/models/participation_spec.rb | 28 ----- spec/models/user/social_actions_spec.rb | 23 +--- 15 files changed, 18 insertions(+), 264 deletions(-) delete mode 100644 db/migrate/20150404193023_participation_counter.rb delete mode 100644 features/desktop/activity_stream.feature diff --git a/Changelog.md b/Changelog.md index ddf6fd3723..2d8f050580 100644 --- a/Changelog.md +++ b/Changelog.md @@ -10,7 +10,6 @@ * Disable auto follow back on aspect deletion [#5846](https://github.com/diaspora/diaspora/pull/5846) * Fix only sharing flag for contacts that are receiving [#5848](https://github.com/diaspora/diaspora/pull/5848) * Return 406 when requesting a JSON representation of people/:guid/contacts [#5849](https://github.com/diaspora/diaspora/pull/5849) -* Destroy Participation when removing interactions with a post [#5852](https://github.com/diaspora/diaspora/pull/5852) * Hide manage services link in the publisher on certain pages [#5854](https://github.com/diaspora/diaspora/pull/5854) * Fix notification mails for limited posts [#5877](https://github.com/diaspora/diaspora/pull/5877) * Fix medium and small avatar URLs when using Camo [#5883](https://github.com/diaspora/diaspora/pull/5883) diff --git a/app/models/comment.rb b/app/models/comment.rb index f6cd6f3532..aa86daedb9 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -47,8 +47,6 @@ class Comment < ActiveRecord::Base after_destroy do self.parent.update_comments_counter - participation = author.participations.where(target_id: post.id).first - participation.unparticipate! if participation.present? end def diaspora_handle diff --git a/app/models/like.rb b/app/models/like.rb index 946c1d2bac..530fa2aa50 100644 --- a/app/models/like.rb +++ b/app/models/like.rb @@ -19,8 +19,6 @@ class Like < Federated::Relayable after_destroy do self.parent.update_likes_counter - participation = author.participations.where(target_id: target.id).first - participation.unparticipate! if participation.present? end xml_attr :positive diff --git a/app/models/participation.rb b/app/models/participation.rb index 7a1f0d1801..b360834284 100644 --- a/app/models/participation.rb +++ b/app/models/participation.rb @@ -9,14 +9,6 @@ class Participation < Federated::Relayable end end - def unparticipate! - if count == 1 - destroy - else - update!(count: count.pred) - end - end - # NOTE API V1 to be extracted acts_as_api api_accessible :backbone do |t| diff --git a/app/models/user.rb b/app/models/user.rb index b318465a24..de6cc79dfe 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -377,10 +377,10 @@ class User < ActiveRecord::Base retraction = Retraction.for(target) end - if target.is_a?(Post) - opts[:additional_subscribers] = target.resharers - opts[:services] = services - end + if target.is_a?(Post) + opts[:additional_subscribers] = target.resharers + opts[:services] = self.services + end mailman = Postzord::Dispatcher.build(self, retraction, opts) mailman.post diff --git a/app/models/user/social_actions.rb b/app/models/user/social_actions.rb index 2b3ff4a4a9..ccc30b4841 100644 --- a/app/models/user/social_actions.rb +++ b/app/models/user/social_actions.rb @@ -1,6 +1,6 @@ module User::SocialActions def comment!(target, text, opts={}) - update_or_create_participation!(target) + find_or_create_participation!(target) Comment::Generator.new(self, target, text).create!(opts) end @@ -9,17 +9,17 @@ module User::SocialActions end def like!(target, opts={}) - update_or_create_participation!(target) + find_or_create_participation!(target) Like::Generator.new(self, target).create!(opts) end def participate_in_poll!(target, answer, opts={}) - update_or_create_participation!(target) + find_or_create_participation!(target) PollParticipation::Generator.new(self, target, answer).create!(opts) end def reshare!(target, opts={}) - update_or_create_participation!(target) + find_or_create_participation!(target) reshare = build_post(:reshare, :root_guid => target.guid) reshare.save! Postzord::Dispatcher.defer_build_and_post(self, reshare) @@ -48,12 +48,7 @@ module User::SocialActions ) end - def update_or_create_participation!(target) - participation = participations.where(target_id: target).first - if participation.present? - participation.update!(count: participation.count.next) - else - participate!(target) - end + def find_or_create_participation!(target) + participations.where(:target_id => target).first || participate!(target) end end diff --git a/db/migrate/20150404193023_participation_counter.rb b/db/migrate/20150404193023_participation_counter.rb deleted file mode 100644 index a13d075b89..0000000000 --- a/db/migrate/20150404193023_participation_counter.rb +++ /dev/null @@ -1,29 +0,0 @@ -class ParticipationCounter < ActiveRecord::Migration - def up - add_column :participations, :count, :int, null: false, default: 1 - - posts_count = Post.select("COUNT(posts.id)") - .where("posts.id = participations.target_id") - .where("posts.author_id = participations.author_id") - .to_sql - likes_count = Like.select("COUNT(likes.id)") - .where("likes.target_id = participations.target_id") - .where("likes.author_id = participations.author_id") - .to_sql - comments_count = Comment.select("COUNT(comments.id)") - .where("comments.commentable_id = participations.target_id") - .where("comments.author_id = participations.author_id") - .to_sql - polls_count = PollParticipation.select("COUNT(*)") - .where("poll_participations.author_id = participations.author_id") - .joins(:poll) - .where("polls.status_message_id = participations.target_id") - .to_sql - Participation.update_all("count = (#{posts_count}) + (#{likes_count}) + (#{comments_count}) + (#{polls_count})") - Participation.where(count: 0).delete_all - end - - def down - remove_column :participations, :count - end -end diff --git a/db/schema.rb b/db/schema.rb index 40ffa940f6..07f4db16ca 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150404193023) do +ActiveRecord::Schema.define(version: 20150403212139) do create_table "account_deletions", force: :cascade do |t| t.string "diaspora_handle", limit: 255 @@ -254,13 +254,12 @@ ActiveRecord::Schema.define(version: 20150404193023) do create_table "participations", force: :cascade do |t| t.string "guid", limit: 255 t.integer "target_id", limit: 4 - t.string "target_type", limit: 60, null: false + t.string "target_type", limit: 60, null: false t.integer "author_id", limit: 4 t.text "author_signature", limit: 65535 t.text "parent_author_signature", limit: 65535 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "count", limit: 4, default: 1, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end add_index "participations", ["guid"], name: "index_participations_on_guid", length: {"guid"=>191}, using: :btree diff --git a/features/desktop/activity_stream.feature b/features/desktop/activity_stream.feature deleted file mode 100644 index 81d0d72f87..0000000000 --- a/features/desktop/activity_stream.feature +++ /dev/null @@ -1,104 +0,0 @@ -@javascript -Feature: The activity stream - Background: - Given following users exist: - | username | email | - | Bob Jones | bob@bob.bob | - | Alice Smith | alice@alice.alice | - And a user with email "bob@bob.bob" is connected with "alice@alice.alice" - When "alice@alice.alice" has posted a status message with a photo - - Scenario: Sorting - When I sign in as "bob@bob.bob" - - Given I expand the publisher - When I write the status message "A- I like turtles" - And I submit the publisher - - Given I expand the publisher - When I write the status message "B- barack obama is your new bicycle" - And I submit the publisher - - Given I expand the publisher - When I write the status message "C- barack obama is a square" - And I submit the publisher - - When I go to the activity stream page - Then "C- barack obama is a square" should be post 1 - And "B- barack obama is your new bicycle" should be post 2 - And "A- I like turtles" should be post 3 - - When I like the post "A- I like turtles" in the stream - And I comment "Sassy sawfish" on "C- barack obama is a square" - And I like the post "B- barack obama is your new bicycle" in the stream - - When I go to the activity stream page - Then "B- barack obama is your new bicycle" should be post 1 - And "C- barack obama is a square" should be post 2 - And "A- I like turtles" should be post 3 - - Scenario: delete a comment - When I sign in as "bob@bob.bob" - And I am on "alice@alice.alice"'s page - Then I should see "Look at this dog" - When I focus the comment field - And I fill in the following: - | text | is that a poodle? | - And I press "Comment" - - When I go to the activity stream page - Then I should see "Look at this dog" - And I should see "is that a poodle?" - - When I am on "alice@alice.alice"'s page - And I click to delete the first comment - And I confirm the alert - - And I go to the activity stream page - Then I should not see "Look at this dog" - - Scenario: unliking a post - When I sign in as "bob@bob.bob" - And I am on "alice@alice.alice"'s page - Then I should see "Look at this dog" - - When I like the post "Look at this dog" in the stream - And I go to the activity stream page - Then I should see "Look at this dog" - - When I am on "alice@alice.alice"'s page - And I unlike the post "Look at this dog" in the stream - And I go to the activity stream page - Then I should not see "Look at this dog" - - Scenario: multiple participations - When I sign in as "bob@bob.bob" - And I am on "alice@alice.alice"'s page - Then I should see "Look at this dog" - - When I like the post "Look at this dog" in the stream - And I go to the activity stream page - Then I should see "Look at this dog" - - When I am on "alice@alice.alice"'s page - Then I should see "Look at this dog" - - When I focus the comment field - And I fill in the following: - | text | is that a poodle? | - And I press "Comment" - - And I go to the activity stream page - Then I should see "Look at this dog" - - When I am on "alice@alice.alice"'s page - And I unlike the post "Look at this dog" in the stream - And I go to the activity stream page - Then I should see "Look at this dog" - - When I am on "alice@alice.alice"'s page - And I click to delete the first comment - And I confirm the alert - - And I go to the activity stream page - Then I should not see "Look at this dog" diff --git a/features/step_definitions/stream_steps.rb b/features/step_definitions/stream_steps.rb index 9e38191e5c..901f4da3d3 100644 --- a/features/step_definitions/stream_steps.rb +++ b/features/step_definitions/stream_steps.rb @@ -2,10 +2,6 @@ When /^I (?:like|unlike) the post "([^"]*)" in the stream$/ do |post_text| like_stream_post(post_text) end -Then /^I should see an image in the publisher$/ do - photo_in_publisher.should be_present -end - Then /^"([^"]*)" should be post (\d+)$/ do |post_text, position| stream_element_numbers_content(position).should have_content(post_text) end diff --git a/spec/controllers/status_messages_controller_spec.rb b/spec/controllers/status_messages_controller_spec.rb index 5fc8ea7ea8..24b8787b82 100644 --- a/spec/controllers/status_messages_controller_spec.rb +++ b/spec/controllers/status_messages_controller_spec.rb @@ -158,13 +158,6 @@ describe StatusMessagesController, :type => :controller do # response.body.should include('Status message requires a message or at least one photo') # end - it "has one participation" do - post :create, status_message_hash - new_message = StatusMessage.find_by_text(status_message_hash[:status_message][:text]) - expect(new_message.participations.count).to eq(1) - expect(new_message.participations.first.count).to eq(1) - end - context 'with photos' do before do @photo1 = alice.build_post(:photo, :pending => true, :user_file=> File.open(photo_fixture_name), :to => @aspect1.id) diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb index 33dc00e6f0..2e2a912058 100644 --- a/spec/models/comment_spec.rb +++ b/spec/models/comment_spec.rb @@ -11,23 +11,6 @@ describe Comment, :type => :model do @status = bob.post(:status_message, :text => "hello", :to => bob.aspects.first.id) end - describe "#destroy" do - before do - @comment = alice.comment!(@status, "why so formal?") - end - - it "should delete a participation" do - expect { @comment.destroy }.to change { Participation.count }.by(-1) - end - - it "should decrease count participation" do - alice.comment!(@status, "Are you there?") - @comment.destroy - participations = Participation.where(target_id: @comment.commentable_id, author_id: @comment.author_id) - expect(participations.first.count).to eq(1) - end - end - describe 'comment#notification_type' do let (:comment) { alice.comment!(@status, "why so formal?") } @@ -77,12 +60,6 @@ describe Comment, :type => :model do alice.comment!(@status, 'hello') }.to change { Comment.count }.by(1) end - - it "should create a participation" do - comment = bob.comment!(@status, "sup dog") - participations = Participation.where(target_id: comment.commentable_id, author_id: comment.author_id) - expect(participations.count).to eq(1) - end end describe 'counter cache' do diff --git a/spec/models/like_spec.rb b/spec/models/like_spec.rb index 9015d09d38..11532bff69 100644 --- a/spec/models/like_spec.rb +++ b/spec/models/like_spec.rb @@ -14,23 +14,6 @@ describe Like, :type => :model do expect(FactoryGirl.build(:like)).to be_valid end - describe "#destroy" do - before do - @like = alice.like!(@status) - end - - it "should delete a participation" do - expect { @like.destroy }.to change { Participation.count }.by(-1) - end - - it "should decrease count participation" do - alice.comment!(@status, "Are you there?") - @like.destroy - participations = Participation.where(target_id: @like.target_id, author_id: @like.author_id) - expect(participations.first.count).to eq(1) - end - end - describe '#notification_type' do before do @like = alice.like!(@status) diff --git a/spec/models/participation_spec.rb b/spec/models/participation_spec.rb index 5c681185d4..658c0cc8ef 100644 --- a/spec/models/participation_spec.rb +++ b/spec/models/participation_spec.rb @@ -20,32 +20,4 @@ describe Participation, :type => :model do it_should_behave_like 'it is relayable' end - - describe "#unparticipate" do - before do - @status = bob.post(:status_message, text: "hello", to: bob.aspects.first.id) - @like = alice.like!(@status) - end - - it "retract participation" do - @like.author.participations.first.unparticipate! - participations = Participation.where(target_id: @like.target_id, author_id: @like.author_id) - expect(participations.count).to eq(0) - end - - it "retract one of multiple participations" do - comment = alice.comment!(@status, "bro") - comment.author.participations.first.unparticipate! - participations = Participation.where(target_id: @like.target_id, author_id: @like.author_id) - expect(participations.count).to eq(1) - expect(participations.first.count).to eq(1) - end - - it "retract all of multiple participations" do - alice.comment!(@status, "bro") - alice.participations.first.unparticipate! - alice.participations.first.unparticipate! - expect(Participation.where(target_id: @like.target_id, author_id: @like.author_id).count).to eq(0) - end - end end diff --git a/spec/models/user/social_actions_spec.rb b/spec/models/user/social_actions_spec.rb index ed3041b0f0..74a67608be 100644 --- a/spec/models/user/social_actions_spec.rb +++ b/spec/models/user/social_actions_spec.rb @@ -11,10 +11,9 @@ describe User::SocialActions, :type => :model do expect(alice.comment!(@status, "unicorn_mountain").text).to eq("unicorn_mountain") end - it "creates a participation" do + it "creates a partcipation" do expect{ alice.comment!(@status, "bro") }.to change(Participation, :count).by(1) expect(alice.participations.last.target).to eq(@status) - expect(alice.participations.last.count).to eq(1) end it "creates the comment" do @@ -29,7 +28,7 @@ describe User::SocialActions, :type => :model do end describe 'User#like!' do - it "creates a participation" do + it "creates a partcipation" do expect{ alice.like!(@status) }.to change(Participation, :count).by(1) expect(alice.participations.last.target).to eq(@status) end @@ -52,7 +51,7 @@ describe User::SocialActions, :type => :model do @status = bob.post(:status_message, :text => "hello", :to => @bobs_aspect.id) end - it "creates a participation" do + it "creates a partcipation" do expect{ alice.like!(@status) }.to change(Participation, :count).by(1) end @@ -111,18 +110,4 @@ describe User::SocialActions, :type => :model do expect(alice.participate_in_poll!(@status, @answer).poll_answer).to eq(@answer) end end - - describe "many actions" do - it "two coments" do - alice.comment!(@status, "bro...") - alice.comment!(@status, "...ther") - expect(alice.participations.last.count).to eq(2) - end - - it "like and comment" do - alice.comment!(@status, "bro...") - alice.like!(@status) - expect(alice.participations.last.count).to eq(2) - end - end -end +end \ No newline at end of file -- GitLab