Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1841684
ICalendarTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
6 KB
Subscribers
None
ICalendarTest.php
View Options
<?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
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Jan 7, 5:47 PM (1 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
916078
Default Alt Text
ICalendarTest.php (6 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment