Skip to content

Commit

Permalink
FIX: Missing pending queued posts from topic view (#22838)
Browse files Browse the repository at this point in the history
A previous change updated `ReviewableQueuedPost`'s `created_by`
to be consistent with other reviewable types. It assigns
the the creator of the post being queued to `target_created_by` and sets
the `created_by` to the creator of the reviewable itself.

This fix updates some of the `created_by` references missed during the
intial fix.
  • Loading branch information
s3lase committed Jul 28, 2023
1 parent 3bee2a4 commit 81cf481
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 10 deletions.
2 changes: 1 addition & 1 deletion app/jobs/regular/export_user_archive.rb
Expand Up @@ -459,7 +459,7 @@ def queued_posts_export

# Most Reviewable fields staff-private, but post content needs to be exported.
ReviewableQueuedPost
.where(created_by: @current_user.id)
.where(target_created_by_id: @current_user.id)
.order(:created_at)
.each do |rev|
yield(
Expand Down
4 changes: 3 additions & 1 deletion app/models/reviewable.rb
Expand Up @@ -101,7 +101,8 @@ def self.needs_review!(
created_by:,
payload: nil,
reviewable_by_moderator: false,
potential_spam: true
potential_spam: true,
target_created_by: nil
)
reviewable =
new(
Expand All @@ -111,6 +112,7 @@ def self.needs_review!(
reviewable_by_moderator: reviewable_by_moderator,
payload: payload,
potential_spam: potential_spam,
target_created_by: target_created_by,
)
reviewable.created_new!

Expand Down
2 changes: 1 addition & 1 deletion app/models/user.rb
Expand Up @@ -1543,7 +1543,7 @@ def number_of_flagged_posts
end

def number_of_rejected_posts
ReviewableQueuedPost.rejected.where(created_by_id: self.id).count
ReviewableQueuedPost.rejected.where(target_created_by_id: self.id).count
end

def number_of_flags_given
Expand Down
2 changes: 1 addition & 1 deletion lib/topic_view.rb
Expand Up @@ -575,7 +575,7 @@ def reviewable_counts

def pending_posts
@pending_posts ||=
ReviewableQueuedPost.pending.where(created_by: @user, topic: @topic).order(:created_at)
ReviewableQueuedPost.pending.where(target_created_by: @user, topic: @topic).order(:created_at)
end

def actions_summary
Expand Down
6 changes: 4 additions & 2 deletions spec/jobs/export_user_archive_spec.rb
Expand Up @@ -522,9 +522,11 @@ def make_component_json

describe "queued posts" do
let(:component) { "queued_posts" }
let(:reviewable_post) { Fabricate(:reviewable_queued_post, topic: topic, created_by: user) }
let(:reviewable_post) do
Fabricate(:reviewable_queued_post, topic: topic, target_created_by: user)
end
let(:reviewable_topic) do
Fabricate(:reviewable_queued_post_topic, category: category, created_by: user)
Fabricate(:reviewable_queued_post_topic, category: category, target_created_by: user)
end

it "correctly exports queued posts" do
Expand Down
14 changes: 11 additions & 3 deletions spec/models/user_spec.rb
Expand Up @@ -547,7 +547,7 @@ def user_error_message(*keys)
fab!(:posts) { [post1, post2, post3] }
fab!(:post_ids) { [post1.id, post2.id, post3.id] }
let(:guardian) { Guardian.new(Fabricate(:admin)) }
fab!(:reviewable_queued_post) { Fabricate(:reviewable_queued_post, created_by: user) }
fab!(:reviewable_queued_post) { Fabricate(:reviewable_queued_post, target_created_by: user) }

it "deletes only one batch of posts" do
post2
Expand Down Expand Up @@ -1981,13 +1981,21 @@ def hash(password, salt, algorithm = User::TARGET_PASSWORD_ALGORITHM)

describe "#number_of_rejected_posts" do
it "counts rejected posts" do
Fabricate(:reviewable_queued_post, created_by: user, status: Reviewable.statuses[:rejected])
Fabricate(
:reviewable_queued_post,
target_created_by: user,
status: Reviewable.statuses[:rejected],
)

expect(user.number_of_rejected_posts).to eq(1)
end

it "ignore non-rejected posts" do
Fabricate(:reviewable_queued_post, created_by: user, status: Reviewable.statuses[:approved])
Fabricate(
:reviewable_queued_post,
target_created_by: user,
status: Reviewable.statuses[:approved],
)

expect(user.number_of_rejected_posts).to eq(0)
end
Expand Down
3 changes: 2 additions & 1 deletion spec/serializers/topic_view_serializer_spec.rb
Expand Up @@ -357,7 +357,8 @@ def serialize_topic(topic, user_arg)
payload: {
raw: "hello my raw contents",
},
created_by: user,
created_by: Discourse.system_user,
target_created_by: user,
)
end

Expand Down

0 comments on commit 81cf481

Please sign in to comment.