FEATURE: New 'Reviewable' model to make reviewable items generic

Includes support for flags, reviewable users and queued posts, with REST API
backwards compatibility.

Co-Authored-By: romanrizzi <romanalejandro@gmail.com>
Co-Authored-By: jjaffeux <j.jaffeux@gmail.com>
This commit is contained in:
Robin Ward
2019-03-28 12:45:10 -04:00
co-authored by romanrizzi jjaffeux
parent 9a56b398a1
commit b58867b6e9
354 changed files with 8090 additions and 5225 deletions
+23 -51
View File
@@ -162,17 +162,17 @@ describe UserMerger do
now = Time.zone.now
freeze_time(now - 1.day)
PostAction.act(source_user, p1, PostActionType.types[:like])
PostAction.act(source_user, p2, PostActionType.types[:like])
PostAction.act(target_user, p2, PostActionType.types[:like])
PostAction.act(target_user, p3, PostActionType.types[:like])
PostActionCreator.like(source_user, p1)
PostActionCreator.like(source_user, p2)
PostActionCreator.like(target_user, p2)
PostActionCreator.like(target_user, p3)
freeze_time(now)
PostAction.act(source_user, p4, PostActionType.types[:like])
PostAction.act(source_user, p5, PostActionType.types[:like])
PostAction.act(target_user, p5, PostActionType.types[:like])
PostAction.act(source_user, p6, PostActionType.types[:like])
PostAction.remove_act(source_user, p6, PostActionType.types[:like])
PostActionCreator.like(source_user, p4)
PostActionCreator.like(source_user, p5)
PostActionCreator.like(target_user, p5)
PostActionCreator.like(source_user, p6)
PostActionDestroyer.destroy(source_user, p6, :like)
merge_users!
@@ -337,10 +337,10 @@ describe UserMerger do
type_ids = PostActionType.public_type_ids + [PostActionType.flag_types.values.first]
type_ids.each do |type|
PostAction.act(source_user, p1, type)
PostAction.act(source_user, p2, type)
PostAction.act(target_user, p2, type)
PostAction.act(target_user, p3, type)
PostActionCreator.new(source_user, p1, type).perform
PostActionCreator.new(source_user, p2, type).perform
PostActionCreator.new(target_user, p2, type).perform
PostActionCreator.new(target_user, p3, type).perform
end
merge_users!
@@ -359,16 +359,16 @@ describe UserMerger do
p3 = Fabricate(:post)
p4 = Fabricate(:post)
action1 = PostAction.act(source_user, p1, PostActionType.flag_types[:off_topic])
action1 = PostActionCreator.create(source_user, p1, :off_topic).post_action
action1.update_attribute(:deleted_by_id, source_user.id)
action2 = PostAction.act(source_user, p2, PostActionType.flag_types[:off_topic])
action2 = PostActionCreator.create(source_user, p2, :off_topic).post_action
action2.update_attribute(:deferred_by_id, source_user.id)
action3 = PostAction.act(source_user, p3, PostActionType.flag_types[:off_topic])
action3 = PostActionCreator.create(source_user, p3, :off_topic).post_action
action3.update_attribute(:agreed_by_id, source_user.id)
action4 = PostAction.act(source_user, p4, PostActionType.flag_types[:off_topic])
action4 = PostActionCreator.create(source_user, p4, :off_topic).post_action
action4.update_attribute(:disagreed_by_id, source_user.id)
merge_users!
@@ -452,8 +452,8 @@ describe UserMerger do
PostActionType.types.each do |type_name, type_id|
posts[type_name] = post = Fabricate(:post, user: walter)
PostAction.act(source_user, post, type_id)
PostAction.act(target_user, post, type_id)
PostActionCreator.new(source_user, post, type_id).perform
PostActionCreator.new(target_user, post, type_id).perform
end
merge_users!
@@ -465,17 +465,13 @@ describe UserMerger do
end
end
it "updates queued posts" do
topic = Fabricate(:topic)
post1 = Fabricate(:queued_post, topic: topic, user: source_user)
post2 = Fabricate(:queued_post, topic: topic, approved_by: source_user)
post3 = Fabricate(:queued_post, topic: topic, rejected_by: source_user)
it "updates reviewables and reviewable history" do
reviewable = Fabricate(:reviewable_queued_post, created_by: source_user)
merge_users!
expect(post1.reload.user).to eq(target_user)
expect(post2.reload.approved_by).to eq(target_user)
expect(post3.reload.rejected_by).to eq(target_user)
expect(reviewable.reload.created_by).to eq(target_user)
expect(reviewable.reviewable_histories.first.created_by).to eq(target_user)
end
describe 'search logs' do
@@ -683,14 +679,6 @@ describe UserMerger do
let(:post2) { Fabricate(:post) }
let(:post3) { Fabricate(:post) }
def log_pending_action(user, post)
UserAction.log_action!(action_type: UserAction::PENDING,
user_id: user.id,
acting_user_id: user.id,
target_topic_id: post.topic.id,
queued_post_id: post.id)
end
def log_like_action(acting_user, user, post)
UserAction.log_action!(action_type: UserAction::LIKE,
user_id: user.id,
@@ -707,22 +695,6 @@ describe UserMerger do
target_post_id: -1)
end
it "merges when target_post_id is not set" do
a1 = log_pending_action(source_user, post1)
_a2 = log_pending_action(source_user, post2)
a3 = log_pending_action(target_user, post2)
a4 = log_pending_action(target_user, post3)
merge_users!
expect(UserAction.count).to eq(3)
action_ids = UserAction.where(action_type: UserAction::PENDING,
user_id: target_user.id,
acting_user_id: target_user.id).pluck(:id)
expect(action_ids).to contain_exactly(a1.id, a3.id, a4.id)
end
it "merges when target_post_id is set" do
_a1 = log_like_action(source_user, walter, post1)
a2 = log_like_action(target_user, walter, post1)