Sha256: 50b636eee57e2b7396d57fcdea7d97917d8f27dfbab836698355665e672c5525

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

require 'spec_helper'

describe RiCal::Component::TZInfoTimezone do

  it "should produce an rfc representation" do
    tz = RiCal::Component::TZInfoTimezone.new(TZInfo::Timezone.get("America/New_York"))
    local_first = DateTime.parse("Apr 10, 2007")
    local_last = DateTime.parse("Apr 6, 2008")
    utc_first = tz.local_to_utc(local_first)
    utc_last = tz.local_to_utc(local_last)
    rez = tz.to_rfc2445_string(utc_first, utc_last)
    rez.should == <<-ENDDATA
BEGIN:VTIMEZONE
TZID;X-RICAL-TZSOURCE=TZINFO:America/New_York
BEGIN:DAYLIGHT
DTSTART:20070311T020000
RDATE:20070311T020000
RDATE:20080309T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20071104T020000
RDATE:20071104T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
END:VTIMEZONE
ENDDATA
  end

  TZInfo::Timezone.all_identifiers.each do |tz|
    context "TZInfo timezone #{tz}" do
      before(:each) do
        @calendar = RiCal.Calendar do |cal|
          cal.event do |event|
            event.description = "test"
            event.dtstart = "TZID=#{tz}:20090530T123000"
            event.dtend =   "TZID=#{tz}:20090530T123001"
          end
        end
      end
      it "should be allowed as a tzid" do
        lambda {@calendar.export}.should_not raise_error
      end
      unless tz == "UTC"
        it "should produce at least one period in the VTIMEZONE" do
          @calendar.export.should match(/BEGIN:(STANDARD|DAYLIGHT)/)
        end
      end
    end
  end

  it "should not raise an error with Ambigous times" do
    tz = RiCal::Component::TZInfoTimezone.new(TZInfo::Timezone.get("America/New_York"))
    local_start = DateTime.parse("2011-11-06T01:30:00+00:00")
    # This time appears twice. Because at 2:00 am the clock falls back to 1:00 am again
    local_end = DateTime.parse("Nov 30, 2012")
    lambda { tz.export_local_to(StringIO.new, local_start, local_end) }.should_not raise_error(TZInfo::AmbiguousTime)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
friflaj_ri_cal-0.9.0 spec/ri_cal/component/t_z_info_timezone_spec.rb