mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:43:33 +08:00
don't return staged users in mentions
This commit is contained in:
@ -11,7 +11,7 @@ class UserSearch
|
|||||||
end
|
end
|
||||||
|
|
||||||
def scoped_users
|
def scoped_users
|
||||||
users = User.where("active")
|
users = User.where(active: true, staged: false)
|
||||||
|
|
||||||
unless @searching_user && @searching_user.staff?
|
unless @searching_user && @searching_user.staff?
|
||||||
users = users.not_suspended
|
users = users.not_suspended
|
||||||
|
@ -5,15 +5,17 @@ describe UserSearch do
|
|||||||
let(:topic) { Fabricate :topic }
|
let(:topic) { Fabricate :topic }
|
||||||
let(:topic2) { Fabricate :topic }
|
let(:topic2) { Fabricate :topic }
|
||||||
let(:topic3) { Fabricate :topic }
|
let(:topic3) { Fabricate :topic }
|
||||||
|
let(:topic4) { Fabricate :topic }
|
||||||
let(:user1) { Fabricate :user, username: "mrb", name: "Michael Madsen", last_seen_at: 10.days.ago }
|
let(:user1) { Fabricate :user, username: "mrb", name: "Michael Madsen", last_seen_at: 10.days.ago }
|
||||||
let(:user2) { Fabricate :user, username: "mrblue", name: "Eddie Code", last_seen_at: 9.days.ago }
|
let(:user2) { Fabricate :user, username: "mrblue", name: "Eddie Code", last_seen_at: 9.days.ago }
|
||||||
let(:user3) { Fabricate :user, username: "mrorange", name: "Tim Roth", last_seen_at: 8.days.ago }
|
let(:user3) { Fabricate :user, username: "mrorange", name: "Tim Roth", last_seen_at: 8.days.ago }
|
||||||
let(:user4) { Fabricate :user, username: "mrpink", name: "Steve Buscemi", last_seen_at: 7.days.ago }
|
let(:user4) { Fabricate :user, username: "mrpink", name: "Steve Buscemi", last_seen_at: 7.days.ago }
|
||||||
let(:user5) { Fabricate :user, username: "mrbrown", name: "Quentin Tarantino", last_seen_at: 6.days.ago }
|
let(:user5) { Fabricate :user, username: "mrbrown", name: "Quentin Tarantino", last_seen_at: 6.days.ago }
|
||||||
let(:user6) { Fabricate :user, username: "mrwhite", name: "Harvey Keitel", last_seen_at: 5.days.ago }
|
let(:user6) { Fabricate :user, username: "mrwhite", name: "Harvey Keitel", last_seen_at: 5.days.ago }
|
||||||
let!(:inactive) { Fabricate :user, username: "Ghost", active: false }
|
let!(:inactive) { Fabricate :user, username: "Ghost", active: false }
|
||||||
let(:admin) { Fabricate :admin, username: "theadmin" }
|
let(:admin) { Fabricate :admin, username: "theadmin" }
|
||||||
let(:moderator) { Fabricate :moderator, username: "themod" }
|
let(:moderator) { Fabricate :moderator, username: "themod" }
|
||||||
|
let(:staged) { Fabricate :staged }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
ActiveRecord::Base.observers.enable :all
|
ActiveRecord::Base.observers.enable :all
|
||||||
@ -24,6 +26,8 @@ describe UserSearch do
|
|||||||
Fabricate :post, user: user4, topic: topic
|
Fabricate :post, user: user4, topic: topic
|
||||||
Fabricate :post, user: user5, topic: topic3
|
Fabricate :post, user: user5, topic: topic3
|
||||||
Fabricate :post, user: user6, topic: topic
|
Fabricate :post, user: user6, topic: topic
|
||||||
|
Fabricate :post, user: staged, topic: topic4
|
||||||
|
|
||||||
user6.update_attributes(suspended_at: 1.day.ago, suspended_till: 1.year.from_now)
|
user6.update_attributes(suspended_at: 1.day.ago, suspended_till: 1.year.from_now)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -31,10 +35,9 @@ describe UserSearch do
|
|||||||
UserSearch.new(*args).search
|
UserSearch.new(*args).search
|
||||||
end
|
end
|
||||||
|
|
||||||
# this is a seriously expensive integration test, re-creating this entire test db is too expensive
|
# this is a seriously expensive integration test,
|
||||||
# reuse
|
# re-creating this entire test db is too expensive reuse
|
||||||
it "operates correctly" do
|
it "operates correctly" do
|
||||||
|
|
||||||
# normal search
|
# normal search
|
||||||
results = search_for(user1.name.split(" ").first)
|
results = search_for(user1.name.split(" ").first)
|
||||||
expect(results.size).to eq(1)
|
expect(results.size).to eq(1)
|
||||||
@ -45,7 +48,7 @@ describe UserSearch do
|
|||||||
expect(results.size).to eq(1)
|
expect(results.size).to eq(1)
|
||||||
expect(results.first).to eq(user1)
|
expect(results.first).to eq(user1)
|
||||||
|
|
||||||
# username
|
# username
|
||||||
results = search_for(user4.username)
|
results = search_for(user4.username)
|
||||||
expect(results.size).to eq(1)
|
expect(results.size).to eq(1)
|
||||||
expect(results.first).to eq(user4)
|
expect(results.first).to eq(user4)
|
||||||
@ -70,7 +73,6 @@ describe UserSearch do
|
|||||||
results = search_for("mrb", searching_user: admin)
|
results = search_for("mrb", searching_user: admin)
|
||||||
expect(results.size).to eq(3)
|
expect(results.size).to eq(3)
|
||||||
|
|
||||||
|
|
||||||
results = search_for("MR", searching_user: admin)
|
results = search_for("MR", searching_user: admin)
|
||||||
expect(results.size).to eq(6)
|
expect(results.size).to eq(6)
|
||||||
|
|
||||||
@ -81,7 +83,6 @@ describe UserSearch do
|
|||||||
results = search_for("mrb", topic_id: topic.id)
|
results = search_for("mrb", topic_id: topic.id)
|
||||||
expect(results.first).to eq(user1)
|
expect(results.first).to eq(user1)
|
||||||
|
|
||||||
|
|
||||||
results = search_for("mrb", topic_id: topic2.id)
|
results = search_for("mrb", topic_id: topic2.id)
|
||||||
expect(results[1]).to eq(user2)
|
expect(results[1]).to eq(user2)
|
||||||
|
|
||||||
@ -105,11 +106,15 @@ describe UserSearch do
|
|||||||
expect(results.size).to eq(0)
|
expect(results.size).to eq(0)
|
||||||
|
|
||||||
# find an exact match first
|
# find an exact match first
|
||||||
results = search_for("mrB")
|
results = search_for(user1.username)
|
||||||
expect(results.first.username).to eq(user1.username)
|
expect(results.first.username).to eq(user1.username)
|
||||||
|
|
||||||
# don't return inactive users
|
# don't return inactive users
|
||||||
results = search_for("Ghost")
|
results = search_for(inactive.username)
|
||||||
|
expect(results).to be_blank
|
||||||
|
|
||||||
|
# don't return staged users
|
||||||
|
results = search_for(staged.username)
|
||||||
expect(results).to be_blank
|
expect(results).to be_blank
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user