FIX: Do not update user stats like counts for private messages.

This commit is contained in:
Guo Xiang Tan
2017-01-16 10:18:10 +08:00
parent ed5fa20b0c
commit e3b6f9b8ae
4 changed files with 93 additions and 23 deletions

View File

@@ -105,7 +105,7 @@ describe UserAction do
describe 'when user likes' do
let!(:post) { Fabricate(:post) }
let(:post) { Fabricate(:post) }
let(:likee) { post.user }
let(:liker) { Fabricate(:coding_horror) }
@@ -140,6 +140,23 @@ describe UserAction do
expect(liker.user_stat.reload.likes_given).to eq(0)
end
context 'private message' do
let(:post) { Fabricate(:private_message_post) }
let(:likee) { post.topic.topic_allowed_users.first.user }
let(:liker) { post.topic.topic_allowed_users.last.user }
it 'should not increase user stats' do
expect(@liker_action).not_to eq(nil)
expect(liker.user_stat.reload.likes_given).to eq(0)
expect(@likee_action).not_to eq(nil)
expect(likee.user_stat.reload.likes_received).to eq(0)
PostAction.remove_act(liker, post, PostActionType.types[:like])
expect(liker.user_stat.reload.likes_given).to eq(0)
expect(likee.user_stat.reload.likes_received).to eq(0)
end
end
end
context "liking a private message" do

View File

@@ -63,11 +63,21 @@ describe PostOwnerChanger do
let(:p2user) { p2.user }
before do
topic.user_id = p1user.id
topic.save!
topic.update!(user_id: p1user.id)
p1user.user_stat.update_attributes(topic_count: 1, post_count: 1, first_post_created_at: p1.created_at, topic_reply_count: 0)
p2user.user_stat.update_attributes(topic_count: 0, post_count: 1, first_post_created_at: p2.created_at, topic_reply_count: 1)
p1user.user_stat.update!(
topic_count: 1,
post_count: 1,
first_post_created_at: p1.created_at,
topic_reply_count: 0
)
p2user.user_stat.update!(
topic_count: 0,
post_count: 1,
first_post_created_at: p2.created_at,
topic_reply_count: 1
)
UserAction.create!( action_type: UserAction::NEW_TOPIC, user_id: p1user.id, acting_user_id: p1user.id,
target_post_id: -1, target_topic_id: p1.topic_id, created_at: p1.created_at )
@@ -78,9 +88,19 @@ describe PostOwnerChanger do
UserActionCreator.enable
end
subject(:change_owners) { described_class.new(post_ids: [p1.id, p2.id], topic_id: topic.id, new_owner: user_a, acting_user: editor).change_owner! }
subject(:change_owners) do
described_class.new(
post_ids: [p1.id, p2.id],
topic_id: topic.id,
new_owner: user_a,
acting_user: editor
).change_owner!
end
it "updates users' topic and post counts" do
PostAction.act(p2user, p1, PostActionType.types[:like])
expect(p1user.user_stat.reload.likes_received).to eq(1)
change_owners
p1user.reload; p2user.reload; user_a.reload
@@ -90,11 +110,38 @@ describe PostOwnerChanger do
expect(p2user.post_count).to eq(0)
expect(user_a.topic_count).to eq(1)
expect(user_a.post_count).to eq(2)
expect(p1user.user_stat.first_post_created_at).to eq(nil)
expect(p2user.user_stat.first_post_created_at).to eq(nil)
expect(p1user.user_stat.topic_reply_count).to eq(0)
expect(p2user.user_stat.topic_reply_count).to eq(0)
expect(user_a.user_stat.first_post_created_at).to be_present
p1_user_stat = p1user.user_stat
expect(p1_user_stat.first_post_created_at).to eq(nil)
expect(p1_user_stat.topic_reply_count).to eq(0)
expect(p1_user_stat.likes_received).to eq(0)
p2_user_stat = p2user.user_stat
expect(p2_user_stat.first_post_created_at).to eq(nil)
expect(p2_user_stat.topic_reply_count).to eq(0)
user_a_stat = user_a.user_stat
expect(user_a_stat.first_post_created_at).to be_present
expect(user_a_stat.likes_received).to eq(1)
end
context 'private message topic' do
let(:topic) { Fabricate(:private_message_topic) }
it "should update users' counts" do
PostAction.act(p2user, p1, PostActionType.types[:like])
change_owners
expect(p1user.user_stat.likes_received).to eq(0)
user_a_stat = user_a.user_stat
expect(user_a_stat.first_post_created_at).to be_present
expect(user_a_stat.likes_received).to eq(0)
end
end
it "updates UserAction records" do