mirror of
https://github.com/discourse/discourse.git
synced 2025-02-10 13:24:55 +00:00
#29209 introduced a bug where columns to the directory added via add_directory_column are not being translated properly. This fixes the issue and adds an integration test.
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
|