Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1820677
FreeBusyGeneratorTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
7 KB
Subscribers
None
FreeBusyGeneratorTest.php
View Options
<?php
namespace
Sabre\VObject
;
class
FreeBusyGeneratorTest
extends
\PHPUnit_Framework_TestCase
{
function
getInput
()
{
$tests
=
array
();
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20110101T120000Z
DTEND:20110101T130000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T120000Z/20110101T130000Z"
);
// opaque, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar2
TRANSP:OPAQUE
DTSTART:20110101T130000Z
DTEND:20110101T140000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T130000Z/20110101T140000Z"
);
// transparent, hidden
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar3
TRANSP:TRANSPARENT
DTSTART:20110101T140000Z
DTEND:20110101T150000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
null
,
);
// cancelled, hidden
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar4
STATUS:CANCELLED
DTSTART:20110101T160000Z
DTEND:20110101T170000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
null
,
);
// tentative, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar5
STATUS:TENTATIVE
DTSTART:20110101T180000Z
DTEND:20110101T190000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
'20110101T180000Z/20110101T190000Z'
,
);
// outside of time-range, hidden
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar6
DTSTART:20110101T090000Z
DTEND:20110101T100000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
null
,
);
// outside of time-range, hidden
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar7
DTSTART:20110104T090000Z
DTEND:20110104T100000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
null
,
);
// using duration, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar8
DTSTART:20110101T190000Z
DURATION:PT1H
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
'20110101T190000Z/20110101T200000Z'
,
);
// Day-long event, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar9
DTSTART;VALUE=DATE:20110102
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
'20110102T000000Z/20110103T000000Z'
,
);
// No duration, does not show up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar10
DTSTART:20110101T200000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
null
,
);
// encoded as object, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar11
DTSTART:20110101T210000Z
DURATION:PT1H
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
Reader
::
read
(
$blob
),
'20110101T210000Z/20110101T220000Z'
,
);
// Freebusy. Some parts show up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VFREEBUSY
FREEBUSY:20110103T010000Z/20110103T020000Z
FREEBUSY;FBTYPE=FREE:20110103T020000Z/20110103T030000Z
FREEBUSY:20110103T030000Z/20110103T040000Z,20110103T040000Z/20110103T050000Z
FREEBUSY:20120101T000000Z/20120101T010000Z
FREEBUSY:20110103T050000Z/PT1H
END:VFREEBUSY
END:VCALENDAR
ICS;
$tests
[]
=
array
(
Reader
::
read
(
$blob
),
array
(
'20110103T010000Z/20110103T020000Z'
,
'20110103T030000Z/20110103T040000Z'
,
'20110103T040000Z/20110103T050000Z'
,
'20110103T050000Z/20110103T060000Z'
,
)
);
// Yearly recurrence rule, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar13
DTSTART:20100101T220000Z
DTEND:20100101T230000Z
RRULE:FREQ=YEARLY
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
Reader
::
read
(
$blob
),
'20110101T220000Z/20110101T230000Z'
,
);
// Yearly recurrence rule + duration, shows up
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar14
DTSTART:20100101T230000Z
DURATION:PT1H
RRULE:FREQ=YEARLY
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
Reader
::
read
(
$blob
),
'20110101T230000Z/20110102T000000Z'
,
);
// Floating time, no timezone
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20110101T120000
DTEND:20110101T130000
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T120000Z/20110101T130000Z"
);
// Floating time + reference timezone
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20110101T120000
DTEND:20110101T130000
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T170000Z/20110101T180000Z"
,
new
\DateTimeZone
(
'America/Toronto'
)
);
// All-day event
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART;VALUE=DATE:20110101
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T000000Z/20110102T000000Z"
);
// All-day event + reference timezone
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART;VALUE=DATE:20110101
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
"20110101T050000Z/20110102T050000Z"
,
new
\DateTimeZone
(
'America/Toronto'
)
);
// Recurrence rule with no valid instances
$blob
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20110101T100000Z
DTEND:20110103T120000Z
RRULE:FREQ=WEEKLY;COUNT=1
EXDATE:20110101T100000Z
END:VEVENT
END:VCALENDAR
ICS;
$tests
[]
=
array
(
$blob
,
array
()
);
return
$tests
;
}
/**
* @dataProvider getInput
*/
function
testGenerator
(
$input
,
$expected
,
$timeZone
=
null
)
{
$gen
=
new
FreeBusyGenerator
(
new
\DateTime
(
'20110101T110000Z'
,
new
\DateTimeZone
(
'UTC'
)),
new
\DateTime
(
'20110103T110000Z'
,
new
\DateTimeZone
(
'UTC'
)),
$input
,
$timeZone
);
$result
=
$gen
->
getResult
();
$expected
=
(
array
)
$expected
;
$freebusy
=
$result
->
VFREEBUSY
->
select
(
'FREEBUSY'
);
foreach
(
$freebusy
as
$fb
)
{
$this
->
assertContains
((
string
)
$fb
,
$expected
,
"$fb did not appear in our list of expected freebusy strings. This is concerning!"
);
$k
=
array_search
((
string
)
$fb
,
$expected
);
unset
(
$expected
[
$k
]);
}
$this
->
assertTrue
(
count
(
$expected
)
===
0
,
'There were elements in the expected array that were not found in the output: '
.
"
\n
"
.
print_r
(
$expected
,
true
)
.
"
\n
"
.
$result
->
serialize
()
);
}
function
testGeneratorBaseObject
()
{
$obj
=
new
Component\VCalendar
();
$obj
->
METHOD
=
'PUBLISH'
;
$gen
=
new
FreeBusyGenerator
();
$gen
->
setObjects
(
array
());
$gen
->
setBaseObject
(
$obj
);
$result
=
$gen
->
getResult
();
$this
->
assertEquals
(
'PUBLISH'
,
$result
->
METHOD
->
getValue
());
}
/**
* @expectedException InvalidArgumentException
*/
function
testInvalidArg
()
{
$gen
=
new
FreeBusyGenerator
(
new
\DateTime
(
'2012-01-01'
),
new
\DateTime
(
'2012-12-31'
),
new
\StdClass
()
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Dec 22, 8:52 AM (4 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
915753
Default Alt Text
FreeBusyGeneratorTest.php (7 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment