Mercurial > hg > rc1
view vendor/sabre/vobject/tests/VObject/FreeBusyGeneratorTest.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 source
<?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') ); 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() ); } }