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);
+    }
+
+}