@@ -94,15 +94,22 @@ module IceCube
94
94
95
95
end
96
96
97
- describe Schedule , 'from_ical' do
97
+ describe Schedule , 'from_ical' , system_time_zone : "America/Chicago" do
98
98
99
99
ical_string = <<-ICAL . gsub ( /^\s */ , '' )
100
100
DTSTART:20130314T201500Z
101
101
DTEND:20130314T201545Z
102
102
RRULE:FREQ=WEEKLY;BYDAY=TH;UNTIL=20130531T100000Z
103
103
ICAL
104
104
105
- ical_string_woth_multiple_exdates = <<-ICAL . gsub ( /^\s */ , '' )
105
+ ical_string_with_time_zones = <<-ICAL . gsub ( /^\s */ , '' )
106
+ DTSTART;TZID=America/Denver:20130731T143000
107
+ DTEND:20130731T153000
108
+ RRULE:FREQ=WEEKLY
109
+ EXDATE;TZID=America/Chicago:20130823T143000
110
+ ICAL
111
+
112
+ ical_string_with_multiple_exdates = <<-ICAL . gsub ( /^\s */ , '' )
106
113
DTSTART;TZID=America/Denver:20130731T143000
107
114
DTEND;TZID=America/Denver:20130731T153000
108
115
RRULE:FREQ=WEEKLY;UNTIL=20140730T203000Z;BYDAY=MO,WE,FR
@@ -125,6 +132,20 @@ def sorted_ical(ical)
125
132
it "loads an ICAL string" do
126
133
expect ( IceCube ::Schedule . from_ical ( ical_string ) ) . to be_a ( IceCube ::Schedule )
127
134
end
135
+ describe "parsing time zones" do
136
+ it "sets the time zone of the start time" do
137
+ schedule = IceCube ::Schedule . from_ical ( ical_string_with_time_zones )
138
+ expect ( schedule . start_time . time_zone ) . to eq ActiveSupport ::TimeZone . new ( "America/Denver" )
139
+ end
140
+ it "uses the system time if a time zone is not explicity provided" do
141
+ schedule = IceCube ::Schedule . from_ical ( ical_string_with_time_zones )
142
+ expect ( schedule . end_time ) . not_to respond_to :time_zone
143
+ end
144
+ it "sets the time zone of the exception times" do
145
+ schedule = IceCube ::Schedule . from_ical ( ical_string_with_time_zones )
146
+ expect ( schedule . exception_times [ 0 ] . time_zone ) . to eq ActiveSupport ::TimeZone . new ( "America/Chicago" )
147
+ end
148
+ end
128
149
end
129
150
130
151
describe "daily frequency" do
@@ -235,7 +256,6 @@ def sorted_ical(ical)
235
256
describe 'monthly frequency' do
236
257
it 'matches simple monthly' do
237
258
start_time = Time . now
238
-
239
259
schedule = IceCube ::Schedule . new ( start_time )
240
260
schedule . add_recurrence_rule ( IceCube ::Rule . monthly )
241
261
@@ -359,7 +379,7 @@ def sorted_ical(ical)
359
379
end
360
380
361
381
it 'handles multiple EXDATE lines' do
362
- schedule = IceCube ::Schedule . from_ical ical_string_woth_multiple_exdates
382
+ schedule = IceCube ::Schedule . from_ical ical_string_with_multiple_exdates
363
383
schedule . exception_times . count . should == 3
364
384
end
365
385
end
0 commit comments