discourse/spec/requests/directory_columns_controller_spec.rb
2023-01-09 11:49:28 +00:00

86 lines
2.3 KiB
Ruby

# frozen_string_literal: true
RSpec.describe DirectoryColumnsController do
fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
describe "#index" do
it "returns all active directory columns" do
likes_given = DirectoryColumn.find_by(name: "likes_given")
likes_given.update(enabled: false)
get "/directory-columns.json"
expect(response.parsed_body["directory_columns"].map { |dc| dc["name"] }).not_to include(
"likes_given",
)
end
end
describe "#edit-index" do
fab!(:public_user_field) { Fabricate(:user_field, show_on_profile: true) }
fab!(:private_user_field) do
Fabricate(:user_field, show_on_profile: false, show_on_user_card: false)
end
it "creates directory column records for public user fields" do
sign_in(admin)
expect { get "/edit-directory-columns.json" }.to change { DirectoryColumn.count }.by(1)
end
it "returns a 403 when not logged in as staff member" do
sign_in(user)
get "/edit-directory-columns.json"
expect(response.status).to eq(404)
end
end
describe "#update" do
let(:first_directory_column_id) { DirectoryColumn.first.id }
let(:second_directory_column_id) { DirectoryColumn.second.id }
let(:params) do
{
directory_columns: {
"0": {
id: first_directory_column_id,
enabled: false,
position: 1,
},
"1": {
id: second_directory_column_id,
enabled: true,
position: 1,
},
},
}
end
it "updates exising directory columns" do
sign_in(admin)
expect { put "/edit-directory-columns.json", params: params }.to change {
DirectoryColumn.find(first_directory_column_id).enabled
}.from(true).to(false)
end
it "does not let all columns be disabled" do
sign_in(admin)
bad_params = params
bad_params[:directory_columns][:"1"][:enabled] = false
put "/edit-directory-columns.json", params: bad_params
expect(response.status).to eq(400)
end
it "returns a 404 when not logged in as a staff member" do
sign_in(user)
put "/edit-directory-columns.json", params: params
expect(response.status).to eq(404)
end
end
end