discourse/spec/fabricators/reviewable_fabricator.rb
Selase Krakani 3d554aa10e
FIX: Keep ReviewableQueuedPosts even with user delete reviewable actions (#22501)
Performing a `Delete User`/`Delete and Block User` reviewable actions for a
queued post reviewable from the `review.show` route results in an error
popup even if the action completes successfully.

This happens because unlike other reviewable types, a user delete action
on a queued post reviewable results in the deletion of the reviewable
itself. A subsequent attempt to reload the reviewable record results in
404. The deletion happens as part of the call to `UserDestroyer` which
includes a step for destroying reviewables created by the user being
destroyed. At the root of this is the creator of the queued post
being set as the creator of the reviewable as instead of the system
user.

This change assigns the creator of the reviewable to the system user and
uses the more approapriate `target_created_by` column for the creator of the
post being queued.
2023-07-18 11:50:31 +00:00

79 lines
1.8 KiB
Ruby

# frozen_string_literal: true
Fabricator(:reviewable) do
reviewable_by_moderator true
type "ReviewableUser"
created_by { Fabricate(:user) }
target_id { Fabricate(:user).id }
target_type "User"
target_created_by { Fabricate(:user) }
category
score 1.23
payload { { list: [1, 2, 3], name: "bandersnatch" } }
end
Fabricator(:reviewable_queued_post_topic, class_name: :reviewable_queued_post) do
reviewable_by_moderator true
type "ReviewableQueuedPost"
created_by { Fabricate(:user) }
target_created_by { Fabricate(:user) }
category
payload do
{
raw: "hello world post contents.",
title: "queued post title",
tags: %w[cool neat],
extra: "some extra data",
archetype: "regular",
}
end
end
Fabricator(:reviewable_queued_post) do
reviewable_by_moderator true
type "ReviewableQueuedPost"
created_by { Fabricate(:user) }
target_created_by { Fabricate(:user) }
topic
payload do
{
raw: "hello world post contents.",
reply_to_post_number: 1,
via_email: true,
raw_email: "store_me",
auto_track: true,
custom_fields: {
hello: "world",
},
cooking_options: {
cat: "hat",
},
cook_method: Post.cook_methods[:raw_html],
image_sizes: {
"http://foo.bar/image.png" => {
"width" => 0,
"height" => 222,
},
},
}
end
end
Fabricator(:reviewable_flagged_post) do
reviewable_by_moderator true
type "ReviewableFlaggedPost"
created_by { Fabricate(:user) }
topic
target_type "Post"
target { Fabricate(:post) }
reviewable_scores { |p| [Fabricate.build(:reviewable_score, reviewable_id: p[:id])] }
end
Fabricator(:reviewable_user) do
reviewable_by_moderator true
type "ReviewableUser"
created_by { Fabricate(:user) }
target_type "User"
target { Fabricate(:user) }
end