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:
Ethan Vizitei 2014-11-10 09:58:40 -07:00
parent c627167636
commit 22fb7ca76e
3 changed files with 27 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -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