You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
|
|
|
require 'test/unit'
|
|
require 'icalendar'
|
|
|
|
# This is a test class for the calendar parser.
|
|
class TestIcalendarParser < Test::Unit::TestCase
|
|
|
|
TEST_CAL = File.join(File.dirname(__FILE__), 'fixtures', 'single_event.ics')
|
|
|
|
# First make sure that we can run the parser and get back objects.
|
|
def test_new
|
|
# Make sure we don't take invalid object types.
|
|
assert_raise(ArgumentError) { Icalendar::Parser.new(nil) }
|
|
|
|
# Make sure we get an object back from parsing a file
|
|
calFile = File.open(TEST_CAL)
|
|
cals = Icalendar::Parser.new(calFile).parse
|
|
assert(cals)
|
|
calFile.close
|
|
|
|
# Make sure we get an object back from parsing a string
|
|
calString = File.open(TEST_CAL).read
|
|
cals = Icalendar::Parser.new(calString).parse
|
|
assert(cals)
|
|
end
|
|
|
|
# Now go through and make sure the object is correct using the
|
|
# dynamically generated raw interfaces.
|
|
def test_zzfile_parse
|
|
calFile = File.open(TEST_CAL)
|
|
cals = Icalendar.parse(calFile)
|
|
calFile.close
|
|
do_asserts(cals)
|
|
|
|
Icalendar::Base.quiet
|
|
end
|
|
|
|
def test_string_parse
|
|
# Make sure we get an object back from parsing a string
|
|
calString = File.open(TEST_CAL).read
|
|
cals = Icalendar::Parser.new(calString).parse
|
|
do_asserts(cals)
|
|
end
|
|
|
|
# Just a helper method so we don't have to repeat the same tests.
|
|
def do_asserts(cals)
|
|
# Should just get one calendar back.
|
|
assert_equal(1, cals.size)
|
|
|
|
cal = cals.first
|
|
|
|
# Calendar properties
|
|
assert_equal("2.0", cal.version)
|
|
assert_equal("bsprodidfortestabc123", cal.prodid)
|
|
|
|
# Now the event
|
|
assert_equal(1, cal.events.size)
|
|
|
|
event = cal.events.first
|
|
assert_equal("bsuidfortestabc123", event.uid)
|
|
|
|
summary = "This is a really long summary to test the method of unfolding lines, so I'm just going to make it a whole bunch of lines."
|
|
|
|
assert_equal(summary, event.summary)
|
|
|
|
start = DateTime.parse("20050120T170000")
|
|
daend = DateTime.parse("20050120T184500")
|
|
stamp = DateTime.parse("20050118T211523Z")
|
|
assert_equal(start, event.dtstart)
|
|
assert_equal(daend, event.dtend)
|
|
assert_equal(stamp, event.dtstamp)
|
|
|
|
organizer = URI.parse("mailto:joebob@random.net")
|
|
assert_equal(organizer, event.organizer)
|
|
|
|
ats = event.attachments
|
|
assert_equal(2, ats.size)
|
|
attachment = URI.parse("http://bush.sucks.org/impeach/him.rhtml")
|
|
assert_equal(attachment, ats[0])
|
|
attachment = URI.parse("http://corporations-dominate.existence.net/why.rhtml")
|
|
assert_equal(attachment, ats[1])
|
|
end
|
|
end
|