# Returns the day of +time+ according to user's time zone
def time_to_date(time)
- if time_zone.nil?
- time.to_date
+ self.convert_time_to_user_timezone(time).to_date
+ end
+
+ def convert_time_to_user_timezone(time)
+ if self.time_zone
+ time.in_time_zone(self.time_zone)
else
- time.in_time_zone(time_zone).to_date
+ time.utc? ? time.localtime : time
end
end
options = {}
options[:format] = (Setting.time_format.blank? ? :time : Setting.time_format)
time = time.to_time if time.is_a?(String)
- zone = user.time_zone
- local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time)
+ local = user.convert_time_to_user_timezone(time)
(include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, options)
end
end
end
- def test_index_grouped_by_created_on
+ def test_index_grouped_by_created_on_if_time_zone_is_utc
skip unless IssueQuery.new.groupable_columns.detect {|c| c.name == :created_on}
+ @request.session[:user_id] = 2
+ User.find(2).pref.update(time_zone: 'UTC')
+
get :index, :params => {
:set_filter => 1,
:group_by => 'created_on'
end
end
+ def test_index_grouped_by_created_on_if_time_zone_is_nil
+ skip unless IssueQuery.new.groupable_columns.detect {|c| c.name == :created_on}
+ current_user = User.find(2)
+ @request.session[:user_id] = current_user.id
+ current_user.pref.update(time_zone: nil)
+
+ get :index, :params => {
+ :set_filter => 1,
+ :group_by => 'created_on'
+ }
+ assert_response :success
+
+ # group_name depends on localtime
+ group_name = format_date(Issue.second.created_on.localtime)
+ assert_select 'tr.group span.name', :text => group_name do
+ assert_select '+ span.count', :text => '2'
+ end
+ end
+
def test_index_grouped_by_created_on_as_pdf
skip unless IssueQuery.new.groupable_columns.detect {|c| c.name == :created_on}
assert_equal '2012-05-15', User.find(1).time_to_date(time).to_s
preference.update_attribute :time_zone, ''
- assert_equal '2012-05-15', User.find(1).time_to_date(time).to_s
+ assert_equal time.localtime.to_date.to_s, User.find(1).time_to_date(time).to_s
+ end
+
+ def test_convert_time_to_user_timezone_should_return_the_time_according_to_user_time_zone
+ preference = User.find(1).pref
+ time = Time.gm(2012, 05, 15, 23, 30).utc # 2012-05-15 23:30 UTC
+ time_not_utc = Time.new(2012, 05, 15, 23, 30)
+
+ preference.update_attribute :time_zone, 'Baku' # UTC+5
+ assert_equal '2012-05-16 04:30:00 +0500', User.find(1).convert_time_to_user_timezone(time).to_s
+
+ preference.update_attribute :time_zone, 'La Paz' # UTC-4
+ assert_equal '2012-05-15 19:30:00 -0400', User.find(1).convert_time_to_user_timezone(time).to_s
+
+ preference.update_attribute :time_zone, ''
+ assert_equal time.localtime.to_s, User.find(1).convert_time_to_user_timezone(time).to_s
+ assert_equal time_not_utc, User.find(1).convert_time_to_user_timezone(time_not_utc)
end
def test_fields_for_order_statement_should_return_fields_according_user_format_setting