mirror of
https://github.com/discourse/discourse.git
synced 2026-03-03 23:54:20 +08:00
Following PR #36711 which enabled the refreshed review UI for all users, this commit removes the old feature flag infrastructure and cleans up legacy code that is no longer needed. Backend Changes: - Removed ReviewableActionLog model and its spec entirely - Removed CalculateFinalStatusFromLogs service and spec - Removed site settings: force_old_reviewable_ui, reviewable_old_moderator_actions - Simplified ReviewableActionBuilder — stripped out legacy action-building methods (build_user_actions_bundle, build_post_actions_bundle, build_new_separated_actions) - Cleaned up reviewable models (ReviewableFlaggedPost, ReviewablePost, ReviewableQueuedPost, ReviewableUser, Chat::ReviewableMessage, ReviewablePostVotingComment) — removed unused/legacy action definitions - Removed legacy specs for action builder, action logs, flagged post actions, post actions, user actions, and status-from-logs - Updated system tests and page objects to reflect the new UI structure Frontend Changes: - Deleted legacy components: reviewable-item.gjs, reviewable-user.gjs, review-index-legacy.gjs - Renamed reviewable-refresh/ → reviewable/ — moved all sub-components (created-by, flagged-post, item, post, queued-post, topic-link, user, etc.) out of the refresh directory into the canonical reviewable/ namespace - Simplified reviewable/item.gjs — removed feature flag conditionals and legacy code paths - Cleaned up review/index.gjs and review/show.gjs templates — removed branching between old/new UI - Updated plugin components (chat, AI, post-voting) to import from reviewable/ instead of reviewable-refresh/ - Removed acceptance tests (review-test.js) replaced by system tests - Renamed and updated integration tests from reviewable-refresh/* to reviewable/* Plan for next PRs: - Move plugins from Pages::RefreshedReview to Pages::Review - Move plugins to import from `reviewable/` and not `refreshed-reviewable/` - Move reviewable-user.js import in plugin to use `reviewable/user.js` - Remove unused settings like `reviewable_old_moderator_actions` from plugins - Delete `Pages::RefreshedReview` - Delete `reviewable-refresh/` directory - Delete `reviewable-user.js` component - Delete `reviewable_old_moderator_actions` site setting Plugins PRs: - https://github.com/discourse/discourse-akismet/pull/203 - https://github.com/discourse/discourse-antivirus/pull/98 - https://github.com/discourse/discourse-category-experts/pull/223
73 lines
2.9 KiB
Ruby
73 lines
2.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe ReviewableUserSerializer do
|
|
let(:user) { Fabricate(:user) }
|
|
let(:admin) { Fabricate(:admin) }
|
|
let(:moderator) { Fabricate(:moderator) }
|
|
let(:reviewable) { Reviewable.find_by(target: user) }
|
|
|
|
before do
|
|
SiteSetting.must_approve_users = true
|
|
Jobs::CreateUserReviewable.new.execute(user_id: user.id)
|
|
end
|
|
|
|
it "includes the user fields for review" do
|
|
json = ReviewableUserSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
|
|
expect(json[:user_id]).to eq(reviewable.target_id)
|
|
expect(json[:payload]["username"]).to eq(user.username)
|
|
expect(json[:payload]["email"]).to eq(user.email)
|
|
expect(json[:payload]["name"]).to eq(user.name)
|
|
expect(json[:topic_url]).to be_blank
|
|
end
|
|
|
|
it "excludes the email user field for moderators" do
|
|
json =
|
|
ReviewableUserSerializer.new(reviewable, scope: Guardian.new(moderator), root: nil).as_json
|
|
expect(json[:user_id]).to eq(reviewable.target_id)
|
|
expect(json[:payload]["username"]).to eq(user.username)
|
|
expect(json[:payload]["email"]).to eq(nil)
|
|
expect(json[:payload]["name"]).to eq(user.name)
|
|
expect(json[:topic_url]).to be_blank
|
|
end
|
|
|
|
it "includes the email user field for moderators if enabled" do
|
|
SiteSetting.moderators_view_emails = true
|
|
|
|
json =
|
|
ReviewableUserSerializer.new(reviewable, scope: Guardian.new(moderator), root: nil).as_json
|
|
expect(json[:user_id]).to eq(reviewable.target_id)
|
|
expect(json[:payload]["username"]).to eq(user.username)
|
|
expect(json[:payload]["email"]).to eq(user.email)
|
|
expect(json[:payload]["name"]).to eq(user.name)
|
|
expect(json[:topic_url]).to be_blank
|
|
end
|
|
|
|
it "includes the scrubbed fields for scrubbed reviewables" do
|
|
reviewable.scrub("reason", Guardian.new(admin))
|
|
|
|
json = ReviewableUserSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
|
|
expect(json[:user_id]).to eq(reviewable.target_id)
|
|
expect(json[:payload]["username"]).to eq(nil)
|
|
expect(json[:payload]["email"]).to eq(nil)
|
|
expect(json[:payload]["name"]).to eq(nil)
|
|
expect(json[:payload]["scrubbed_by"]).to eq(admin.username)
|
|
expect(json[:payload]["scrubbed_reason"]).to eq("reason")
|
|
expect(json[:payload]["scrubbed_at"]).to be_present
|
|
expect(json[:topic_url]).to be_blank
|
|
end
|
|
|
|
describe "target_user" do
|
|
it "returns nil when there is no target" do
|
|
reviewable = ReviewableUser.new
|
|
json = ReviewableUserSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
|
|
expect(json[:target_user]).to be_nil
|
|
end
|
|
|
|
it "returns FlaggedUserSerializer when there is a target" do
|
|
json = ReviewableUserSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
|
|
expect(json[:target_user]).to be_present
|
|
expect(json[:target_user][:id]).to eq(user.id)
|
|
expect(json[:target_user][:username]).to eq(user.username)
|
|
end
|
|
end
|
|
end
|