mirror of
https://github.com/discourse/discourse.git
synced 2024-12-16 07:23:46 +08:00
113 lines
2.9 KiB
Ruby
113 lines
2.9 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
describe "Users /u", type: :system do
|
||
|
fab!(:user)
|
||
|
|
||
|
before { Array.new(DirectoryItemsController::PAGE_SIZE + 10) { Fabricate(:user) } }
|
||
|
|
||
|
describe "shows a table of users" do
|
||
|
it "renders successfully for a logged-in user" do
|
||
|
DirectoryItem.refresh!
|
||
|
sign_in(user)
|
||
|
|
||
|
visit("/u")
|
||
|
|
||
|
expect(page).to have_css(".users-directory")
|
||
|
expect(page).not_to have_css(".spinner")
|
||
|
header_texts =
|
||
|
page
|
||
|
.all(".directory-table__column-header .header-contents")
|
||
|
.map { |element| element.text.strip }
|
||
|
|
||
|
expect(header_texts).to eq(
|
||
|
[
|
||
|
"Username",
|
||
|
"Received",
|
||
|
"Given",
|
||
|
"Topics Created",
|
||
|
"Replies Posted",
|
||
|
"Topics Viewed",
|
||
|
"Posts Read",
|
||
|
"Days Visited",
|
||
|
],
|
||
|
)
|
||
|
end
|
||
|
|
||
|
it "renders successfully for an anonymous user" do
|
||
|
DirectoryItem.refresh!
|
||
|
visit("/u")
|
||
|
|
||
|
expect(page).to have_css(".users-directory")
|
||
|
expect(page).not_to have_css(".spinner")
|
||
|
header_texts =
|
||
|
page
|
||
|
.all(".directory-table__column-header .header-contents")
|
||
|
.map { |element| element.text.strip }
|
||
|
|
||
|
expect(header_texts).to eq(
|
||
|
[
|
||
|
"Username",
|
||
|
"Received",
|
||
|
"Given",
|
||
|
"Topics Created",
|
||
|
"Replies Posted",
|
||
|
"Topics Viewed",
|
||
|
"Posts Read",
|
||
|
"Days Visited",
|
||
|
],
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "new directory item" do
|
||
|
let!(:plugin) { Plugin::Instance.new }
|
||
|
let!(:initial_directory_events) { [] }
|
||
|
|
||
|
before do
|
||
|
initial_directory_events.replace(DiscourseEvent.events["before_directory_refresh"].to_a)
|
||
|
DB.exec("ALTER TABLE directory_items ADD COLUMN IF NOT EXISTS links integer")
|
||
|
end
|
||
|
|
||
|
after do
|
||
|
DiscourseEvent.events["before_directory_refresh"].delete(
|
||
|
(DiscourseEvent.events["before_directory_refresh"].to_a - initial_directory_events).last,
|
||
|
)
|
||
|
DB.exec("ALTER TABLE directory_items DROP COLUMN IF EXISTS links")
|
||
|
end
|
||
|
|
||
|
it "shows the directory column with the appropriate label" do
|
||
|
plugin.add_directory_column(
|
||
|
"links",
|
||
|
query: "SELECT id, RANDOM() AS random_number FROM users;",
|
||
|
)
|
||
|
DirectoryItem.refresh!
|
||
|
DirectoryColumn.find_by(name: "links").update!(enabled: true)
|
||
|
|
||
|
sign_in(user)
|
||
|
|
||
|
visit("/u")
|
||
|
|
||
|
expect(page).to have_css(".users-directory")
|
||
|
expect(page).not_to have_css(".spinner")
|
||
|
header_texts =
|
||
|
page
|
||
|
.all(".directory-table__column-header .header-contents")
|
||
|
.map { |element| element.text.strip }
|
||
|
|
||
|
expect(header_texts).to eq(
|
||
|
[
|
||
|
"Username",
|
||
|
"Received",
|
||
|
"Given",
|
||
|
"Topics Created",
|
||
|
"Replies Posted",
|
||
|
"Topics Viewed",
|
||
|
"Posts Read",
|
||
|
"Days Visited",
|
||
|
"Links",
|
||
|
],
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
end
|