mirror of
https://github.com/discourse/discourse.git
synced 2024-12-21 14:03:57 +08:00
b1321b985a
When a user is missing required fields, they are required to fill those up before continuing to interact with the forum. This applies to admins as well. We keep a whitelist of paths that can still be visited in this mode: FAQ, About, 2FA setup, and any admin route for admins. We concluded that admins should still be able to enable safe mode even with missing required fields. Since plugins etc. can potentially mess with the ability to fill those up.
92 lines
2.5 KiB
Ruby
92 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "User preferences | Profile", type: :system do
|
|
fab!(:user) { Fabricate(:user, active: true) }
|
|
let(:user_preferences_profile_page) { PageObjects::Pages::UserPreferencesProfile.new }
|
|
let(:user_preferences_page) { PageObjects::Pages::UserPreferences.new }
|
|
|
|
before { sign_in(user) }
|
|
|
|
describe "changing bio" do
|
|
it "correctly updates the bio" do
|
|
user_preferences_profile_page.visit(user)
|
|
|
|
user_preferences_profile_page.expand_profile_details
|
|
user_preferences_profile_page.fill_bio(with: "I am a human.")
|
|
user_preferences_profile_page.save
|
|
|
|
expect(user_preferences_profile_page.cooked_bio).to have_text("I am a human.")
|
|
end
|
|
end
|
|
|
|
describe "enforcing required fields" do
|
|
before do
|
|
UserRequiredFieldsVersion.create!
|
|
UserField.create!(
|
|
field_type: "text",
|
|
name: "Favourite Pokemon",
|
|
description: "Hint: It's Mudkip.",
|
|
requirement: :for_all_users,
|
|
editable: true,
|
|
)
|
|
end
|
|
|
|
it "server-side redirects to the profile page to fill up required fields" do
|
|
visit("/")
|
|
|
|
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
|
|
|
expect(page).to have_selector(
|
|
".alert-error",
|
|
text: I18n.t("js.user.preferences.profile.enforced_required_fields"),
|
|
)
|
|
end
|
|
|
|
it "client-side redirects to the profile page to fill up required fields" do
|
|
visit("/faq")
|
|
|
|
expect(page).to have_current_path("/faq")
|
|
|
|
click_logo
|
|
|
|
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
|
|
|
expect(page).to have_selector(
|
|
".alert-error",
|
|
text: I18n.t("js.user.preferences.profile.enforced_required_fields"),
|
|
)
|
|
end
|
|
|
|
it "disables client-side routing while missing required fields" do
|
|
user_preferences_profile_page.visit(user)
|
|
|
|
click_logo
|
|
|
|
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
|
end
|
|
|
|
it "allows user to fill up required fields" do
|
|
user_preferences_profile_page.visit(user)
|
|
|
|
find(".user-field-favourite-pokemon input").fill_in(with: "Mudkip")
|
|
find(".save-button .btn-primary").click
|
|
|
|
expect(page).to have_selector(".pref-bio")
|
|
|
|
visit("/")
|
|
|
|
expect(page).to have_current_path("/")
|
|
end
|
|
|
|
it "allows enabling safe-mode" do
|
|
visit("/safe-mode")
|
|
|
|
expect(page).to have_current_path("/safe-mode")
|
|
|
|
page.find("#btn-enter-safe-mode").click
|
|
|
|
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
|
end
|
|
end
|
|
end
|