discourse/spec/system/user_page/staff_info_spec.rb
Kris fe70d5f291
UX: link helpful flags from user profile staff counters (#39011)
This makes the helpful flags link clickable like the others, and adjusts
styling a bit to improve the roundness and spacing

Before:
<img width="325" alt="image"
src="https://github.com/user-attachments/assets/09c9f474-333b-4afe-9ad9-1164773412ce"
/>


After:
<img width="345" alt="image"
src="https://github.com/user-attachments/assets/824d3624-184c-4469-a8a3-69a54251ecb8"
/>
2026-03-31 13:10:45 -04:00

79 lines
2.7 KiB
Ruby

# frozen_string_literal: true
describe "Viewing user staff info as an admin" do
fab!(:user)
fab!(:admin)
let(:user_page) { PageObjects::Pages::User.new }
before { sign_in(admin) }
context "for warnings" do
fab!(:topic) { Fabricate(:private_message_topic, user: admin, recipient: user) }
fab!(:user_warning) { UserWarning.create!(user: user, created_by: admin, topic: topic) }
it "should display the right link to user's warnings with the right count in text" do
user_page.visit(user).click_staff_info_warnings_link(user, warnings_count: 1)
expect(user_page).to have_warning_messages_path(user)
end
end
context "for silencings" do
fab!(:silencing) do
Fabricate(:user_history, action: UserHistory.actions[:silence_user], target_user: user)
end
it "should display the right link to user's silencings with the right count in text" do
user_page.visit(user)
silencings_counters = page.find(".staff-counters .silencings")
expect(silencings_counters).to have_text("1")
user_page.click_staff_info_silencings_link
expect(user_page).to have_current_path("/admin/logs/staff_action_logs", ignore_query: true)
current_url = user_page.current_url
uri = URI.parse(current_url)
filters = JSON.parse(URI.decode_www_form(uri.query).to_h["filters"])
expect(filters["target_user"]).to eq(user.username)
expect(filters["action_name"]).to eq("silence_user")
end
end
context "for flags given" do
fab!(:flagged_post) { Fabricate(:post, user: admin) }
before do
Group.refresh_automatic_groups!
PostActionCreator.create(user, flagged_post, :inappropriate)
end
it "shows count and links to review queue filtered by flagger" do
user_page.visit(user)
expect(user_page).to have_staff_counter_flags_given(count: 1)
user_page.click_staff_info_flags_given_link
expect(page).to have_current_path(%r{/review})
expect(page).to have_current_path(/flagged_by=#{user.username}/)
expect(page).to have_current_path(/status=approved/)
end
end
context "for flags" do
fab!(:reviewable_flagged_post) { Fabricate(:reviewable_flagged_post, target_created_by: user) }
fab!(:reviewable_queued_post) { Fabricate(:reviewable_queued_post, target_created_by: user) }
let(:review_page) { PageObjects::Pages::Review.new }
it "shows count and links to review queue for all reviewable types" do
user_page.visit(user)
expect(user_page).to have_staff_counter_flags(count: 2)
user_page.click_staff_info_flags_link
expect(review_page).to have_reviewables([reviewable_flagged_post, reviewable_queued_post])
end
end
end