add specs for preventing nil zones in util presenters
refs CNVS-16799 No behavior change, just proving that when you explicitly pass in a nil object to a date or time presenter as a zone override, it uses the default Time.zone correctly. the actual behavioaral change went out in a hotfix in /c/44148 TEST PLAN: specs should pass Change-Id: I59da9cf68d5738b1006ae1579db2946731468539 Reviewed-on: https://gerrit.instructure.com/44159 Reviewed-by: Simon Williams <simon@instructure.com> Tested-by: Jenkins <jenkins@instructure.com> QA-Review: Simon Williams <simon@instructure.com> Product-Review: Ethan Vizitei <evizitei@instructure.com>
This commit is contained in:
parent
c627167636
commit
22fb7ca76e
|
@ -44,11 +44,13 @@ module Utils
|
|||
|
||||
def present_range
|
||||
if start.to_date == finish.to_date
|
||||
I18n.t('time.ranges.same_day', "%{date} from %{start_time} to %{end_time}", date: start_date_string, start_time: start_as_time, end_time: finish_as_time)
|
||||
I18n.t('time.ranges.same_day', "%{date} from %{start_time} to %{end_time}",
|
||||
date: start_date_string, start_time: start_as_time, end_time: finish_as_time)
|
||||
else
|
||||
start_string = datetime_component(start_date_string, start)
|
||||
end_string = datetime_component(end_date_string, finish)
|
||||
I18n.t('time.ranges.different_days', "%{start_date_and_time} to %{end_date_and_time}", start_date_and_time: start_string, end_date_and_time: end_string)
|
||||
I18n.t('time.ranges.different_days', "%{start_date_and_time} to %{end_date_and_time}",
|
||||
start_date_and_time: start_string, end_date_and_time: end_string)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -19,6 +19,11 @@ require_relative '../../spec_helper'
|
|||
|
||||
module Utils
|
||||
describe DatetimeRangePresenter do
|
||||
def overridden_presenter(datetime, zone_name)
|
||||
zone = ActiveSupport::TimeZone[zone_name]
|
||||
DatetimeRangePresenter.new(datetime, nil, :event, zone)
|
||||
end
|
||||
|
||||
describe "#as_string" do
|
||||
it 'can display a single datetime if theres no range' do
|
||||
datetime = Time.zone.parse("#{Time.zone.now.year}-01-01 12:00:00")
|
||||
|
@ -74,12 +79,21 @@ module Utils
|
|||
|
||||
it "accepts a timezone override" do
|
||||
datetime = Time.zone.parse("#{Time.zone.now.year}-01-01 12:00:00")
|
||||
mountain_presenter = DatetimeRangePresenter.new(datetime, nil, :event, ActiveSupport::TimeZone["America/Denver"])
|
||||
central_presenter = DatetimeRangePresenter.new(datetime, nil, :event, ActiveSupport::TimeZone["America/Chicago"])
|
||||
mountain_presenter = overridden_presenter(datetime, "America/Denver")
|
||||
central_presenter = overridden_presenter(datetime, "America/Chicago")
|
||||
expect(mountain_presenter.as_string).to eq("Jan 1 at 5am")
|
||||
expect(central_presenter.as_string).to eq("Jan 1 at 6am")
|
||||
end
|
||||
|
||||
it "uses the default timezone if none provided" do
|
||||
datetime = Time.zone.parse("#{Time.zone.now.year}-01-01 12:00:00")
|
||||
pre_zone = Time.zone
|
||||
Time.zone = "Mountain Time (US & Canada)"
|
||||
nilzone_presenter = DatetimeRangePresenter.new(datetime, nil, :event, nil)
|
||||
expect(nilzone_presenter.as_string).to eq("Jan 1 at 5am")
|
||||
Time.zone = pre_zone
|
||||
end
|
||||
|
||||
it "can deal with date boundaries in the override on time objects" do
|
||||
pre_zone = Time.zone
|
||||
Time.zone = "Alaska"
|
||||
|
@ -87,7 +101,7 @@ module Utils
|
|||
datetime = Time.now
|
||||
|
||||
alaskan_presenter = DatetimeRangePresenter.new(datetime)
|
||||
mountain_presenter = DatetimeRangePresenter.new(datetime, nil, :event, ActiveSupport::TimeZone["America/Denver"])
|
||||
mountain_presenter = overridden_presenter(datetime, "America/Denver")
|
||||
expect(alaskan_presenter.as_string).to eq("Sep 30 at 11:30pm")
|
||||
expect(mountain_presenter.as_string).to eq("Oct 1 at 1:30am")
|
||||
Timecop.return
|
||||
|
|
|
@ -61,6 +61,12 @@ module Utils
|
|||
presenter = TimePresenter.new(time, zone)
|
||||
expect(presenter.as_string).to_not eq(native_zone_presenter.as_string)
|
||||
end
|
||||
|
||||
it 'can handle a nil zone override' do
|
||||
native_zone_presenter = TimePresenter.new(time, nil)
|
||||
explicit_presenter = TimePresenter.new(time, Time.zone)
|
||||
expect(explicit_presenter.as_string).to eq(native_zone_presenter.as_string)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue