mirror of
https://github.com/discourse/discourse.git
synced 2025-06-01 03:45:06 +08:00
FEATURE: Add timezone to core user_options (#8380)
* Add timezone to user_options table * Also migrate existing timezone values from UserCustomField, which is where the discourse-calendar plugin is storing them * Allow user to change their core timezone from Profile * Auto guess & set timezone on login & invite accept & signup * Serialize user_options.timezone for group members. this is so discourse-group-timezones can access the core user timezone, as it is being removed in discourse-calendar. * Annotate user_option with timezone * Validate timezone values
This commit is contained in:
@ -290,6 +290,16 @@ describe InvitesController do
|
||||
expect(json["success"]).to eq(true)
|
||||
expect(json["redirect_to"]).to eq(topic.relative_url)
|
||||
end
|
||||
|
||||
context "if a timezone guess is provided" do
|
||||
it "sets the timezone of the user in user_options" do
|
||||
put "/invites/show/#{invite.invite_key}.json", params: { timezone: "Australia/Melbourne" }
|
||||
expect(response.status).to eq(200)
|
||||
invite.reload
|
||||
user = User.find(invite.user_id)
|
||||
expect(user.user_option.timezone).to eq("Australia/Melbourne")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'failure' do
|
||||
|
@ -1048,6 +1048,16 @@ RSpec.describe SessionController do
|
||||
expect(user.user_auth_tokens.count).to eq(1)
|
||||
expect(UserAuthToken.hash_token(cookies[:_t])).to eq(user.user_auth_tokens.first.auth_token)
|
||||
end
|
||||
|
||||
context "when timezone param is provided" do
|
||||
it "sets the user_option timezone for the user" do
|
||||
post "/session.json", params: {
|
||||
login: user.username, password: 'myawesomepassword', timezone: "Australia/Melbourne"
|
||||
}
|
||||
expect(response.status).to eq(200)
|
||||
expect(user.reload.user_option.timezone).to eq("Australia/Melbourne")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user has 2-factor logins' do
|
||||
|
@ -702,6 +702,22 @@ describe UsersController do
|
||||
post_user
|
||||
expect(User.find_by(username: @user.username).locale).to eq('fr')
|
||||
end
|
||||
|
||||
context "when timezone is provided as a guess on signup" do
|
||||
let(:post_user_params) do
|
||||
{ name: @user.name,
|
||||
username: @user.username,
|
||||
password: "strongpassword",
|
||||
email: @user.email,
|
||||
timezone: "Australia/Brisbane" }
|
||||
end
|
||||
|
||||
it "sets the timezone" do
|
||||
post_user
|
||||
expect(response.status).to eq(200)
|
||||
expect(User.find_by(username: @user.username).user_option.timezone).to eq("Australia/Brisbane")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when creating a non active user (unconfirmed email)' do
|
||||
|
Reference in New Issue
Block a user