Mercurial > hg > rc1
diff vendor/sabre/vobject/tests/VObject/Splitter/ICalendarTest.php @ 7:430dbd5346f7
vendor sabre as distributed
author | Charlie Root |
---|---|
date | Sat, 13 Jan 2018 09:06:10 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/sabre/vobject/tests/VObject/Splitter/ICalendarTest.php Sat Jan 13 09:06:10 2018 -0500 @@ -0,0 +1,325 @@ +<?php + +namespace Sabre\VObject\Splitter; + +use Sabre\VObject; + +class ICalendarTest extends \PHPUnit_Framework_TestCase { + + protected $version; + + function setUp() { + $this->version = VObject\Version::VERSION; + } + + function createStream($data) { + + $stream = fopen('php://memory','r+'); + fwrite($stream, $data); + rewind($stream); + return $stream; + + } + + function testICalendarImportValidEvent() { + + $data = <<<EOT +BEGIN:VCALENDAR +BEGIN:VEVENT +UID:foo +DTSTAMP:20140122T233226Z +DTSTART:20140101T070000Z +END:VEVENT +END:VCALENDAR +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + while($object=$objects->getNext()) { + $return .= $object->serialize(); + } + $this->assertEquals(array(), VObject\Reader::read($return)->validate()); + } + + /** + * @expectedException Sabre\VObject\ParseException + */ + function testICalendarImportWrongType() { + + $data = <<<EOT +BEGIN:VCARD +UID:foo1 +END:VCARD +BEGIN:VCARD +UID:foo2 +END:VCARD +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + } + + function testICalendarImportEndOfData() { + $data = <<<EOT +BEGIN:VCALENDAR +BEGIN:VEVENT +UID:foo +DTSTAMP:20140122T233226Z +END:VEVENT +END:VCALENDAR +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + while($object=$objects->getNext()) { + $return .= $object->serialize(); + } + $this->assertNull($object=$objects->getNext()); + } + + /** + * @expectedException Sabre\VObject\ParseException + */ + function testICalendarImportInvalidEvent() { + $data = <<<EOT +EOT; + $tempFile = $this->createStream($data); + $objects = new ICalendar($tempFile); + + } + + function testICalendarImportMultipleValidEvents() { + + $event[] = <<<EOT +BEGIN:VEVENT +UID:foo1 +DTSTAMP:20140122T233226Z +DTSTART:20140101T050000Z +END:VEVENT +EOT; + +$event[] = <<<EOT +BEGIN:VEVENT +UID:foo2 +DTSTAMP:20140122T233226Z +DTSTART:20140101T060000Z +END:VEVENT +EOT; + + $data = <<<EOT +BEGIN:VCALENDAR +$event[0] +$event[1] +END:VCALENDAR + +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + $i = 0; + while($object=$objects->getNext()) { + + $expected = <<<EOT +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Sabre//Sabre VObject $this->version//EN +CALSCALE:GREGORIAN +$event[$i] +END:VCALENDAR + +EOT; + + $return .= $object->serialize(); + $expected = str_replace("\n", "\r\n", $expected); + $this->assertEquals($expected, $object->serialize()); + $i++; + } + $this->assertEquals(array(), VObject\Reader::read($return)->validate()); + } + + function testICalendarImportEventWithoutUID() { + + $data = <<<EOT +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Sabre//Sabre VObject $this->version//EN +CALSCALE:GREGORIAN +BEGIN:VEVENT +DTSTART:20140101T040000Z +DTSTAMP:20140122T233226Z +END:VEVENT +END:VCALENDAR + +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + while($object=$objects->getNext()) { + $return .= $object->serialize(); + } + + $messages = VObject\Reader::read($return)->validate(); + + if ($messages) { + $messages = array_map( + function($item) { return $item['message']; }, + $messages + ); + $this->fail('Validation errors: ' . implode("\n", $messages)); + } else { + $this->assertEquals(array(), $messages); + } + } + + function testICalendarImportMultipleVTIMEZONESAndMultipleValidEvents() { + + $timezones = <<<EOT +BEGIN:VTIMEZONE +TZID:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +DTSTART:19810329T020000 +TZNAME:MESZ +TZOFFSETTO:+0200 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +DTSTART:19961027T030000 +TZNAME:MEZ +TZOFFSETTO:+0100 +END:STANDARD +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:Europe/London +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +DTSTART:19810329T010000 +TZNAME:GMT+01:00 +TZOFFSETTO:+0100 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +DTSTART:19961027T020000 +TZNAME:GMT +TZOFFSETTO:+0000 +END:STANDARD +END:VTIMEZONE +EOT; + + $event[] = <<<EOT +BEGIN:VEVENT +UID:foo1 +DTSTAMP:20140122T232710Z +DTSTART:20140101T010000Z +END:VEVENT +EOT; + + $event[] = <<<EOT +BEGIN:VEVENT +UID:foo2 +DTSTAMP:20140122T232710Z +DTSTART:20140101T020000Z +END:VEVENT +EOT; + + $event[] = <<<EOT +BEGIN:VEVENT +UID:foo3 +DTSTAMP:20140122T232710Z +DTSTART:20140101T030000Z +END:VEVENT +EOT; + + $data = <<<EOT +BEGIN:VCALENDAR +$timezones +$event[0] +$event[1] +$event[2] +END:VCALENDAR + +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + $i = 0; + while($object=$objects->getNext()) { + + $expected = <<<EOT +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Sabre//Sabre VObject $this->version//EN +CALSCALE:GREGORIAN +$timezones +$event[$i] +END:VCALENDAR + +EOT; + $expected = str_replace("\n", "\r\n", $expected); + + $this->assertEquals($expected, $object->serialize()); + $return .= $object->serialize(); + $i++; + + } + + $this->assertEquals(array(), VObject\Reader::read($return)->validate()); + } + + function testICalendarImportWithOutVTIMEZONES() { + + $data = <<<EOT +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//Mac OS X 10.8//EN +CALSCALE:GREGORIAN +BEGIN:VEVENT +CREATED:20120605T072109Z +UID:D6716295-C10F-4B20-82F9-E1A3026C7DCF +DTEND;VALUE=DATE:20120717 +TRANSP:TRANSPARENT +SUMMARY:Start Vorbereitung +DTSTART;VALUE=DATE:20120716 +DTSTAMP:20120605T072115Z +SEQUENCE:2 +BEGIN:VALARM +X-WR-ALARMUID:A99EDA6A-35EB-4446-B8BC-CDA3C60C627D +UID:A99EDA6A-35EB-4446-B8BC-CDA3C60C627D +TRIGGER:-PT15H +X-APPLE-DEFAULT-ALARM:TRUE +ATTACH;VALUE=URI:Basso +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR + +EOT; + $tempFile = $this->createStream($data); + + $objects = new ICalendar($tempFile); + + $return = ""; + while($object=$objects->getNext()) { + $return .= $object->serialize(); + } + + $messages = VObject\Reader::read($return)->validate(); + $this->assertEquals(array(), $messages); + } + +}