DEV: UserOption.user_tzinfo (#14088)

Provides a safe way to retrieve the timezone of a user.

This is not used in core yet, but used in multiple plugins.
This commit is contained in:
Joffrey JAFFEUX
2021-08-19 21:56:14 +02:00
committed by GitHub
parent e1815a125d
commit 2bbc97fda5
2 changed files with 38 additions and 0 deletions

View File

@ -166,4 +166,28 @@ describe UserOption do
end
end
describe '.user_tzinfo' do
fab!(:user) { Fabricate(:user) }
context 'user with valid timezone given' do
before do
user.user_option.update(timezone: 'Europe/Paris')
end
it 'returns the expect timezone' do
expect(UserOption.user_tzinfo(user.id)).to eq(ActiveSupport::TimeZone.find_tzinfo('Europe/Paris'))
end
end
context 'user with invalid timezone given' do
before do
user.user_option.update(timezone: 'Catopia/Catcity')
end
it 'fallbacks to UTC' do
expect(UserOption.user_tzinfo(user.id)).to eq(ActiveSupport::TimeZone.find_tzinfo('UTC'))
end
end
end
end