'anything']); $abstract->updateCalendar('randomid', $propPatch); $result = $propPatch->commit(); $this->assertFalse($result); } public function testCalendarQuery() { $abstract = new AbstractMock(); $filters = [ 'name' => 'VCALENDAR', 'comp-filters' => [ [ 'name' => 'VEVENT', 'comp-filters' => [], 'prop-filters' => [], 'is-not-defined' => false, 'time-range' => null, ], ], 'prop-filters' => [], 'is-not-defined' => false, 'time-range' => null, ]; $this->assertEquals([ 'event1.ics', ], $abstract->calendarQuery(1, $filters)); } public function testGetCalendarObjectByUID() { $abstract = new AbstractMock(); $this->assertNull( $abstract->getCalendarObjectByUID('principal1', 'zim') ); $this->assertEquals( 'cal1/event1.ics', $abstract->getCalendarObjectByUID('principal1', 'foo') ); $this->assertNull( $abstract->getCalendarObjectByUID('principal3', 'foo') ); $this->assertNull( $abstract->getCalendarObjectByUID('principal1', 'shared') ); } public function testGetMultipleCalendarObjects() { $abstract = new AbstractMock(); $result = $abstract->getMultipleCalendarObjects(1, [ 'event1.ics', 'task1.ics', ]); $expected = [ [ 'id' => 1, 'calendarid' => 1, 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ], [ 'id' => 2, 'calendarid' => 1, 'uri' => 'task1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n", ], ]; $this->assertEquals($expected, $result); } } class AbstractMock extends AbstractBackend { public function getCalendarsForUser($principalUri) { return [ [ 'id' => 1, 'principaluri' => 'principal1', 'uri' => 'cal1', ], [ 'id' => 2, 'principaluri' => 'principal1', '{http://sabredav.org/ns}owner-principal' => 'principal2', 'uri' => 'cal1', ], ]; } public function createCalendar($principalUri, $calendarUri, array $properties) { } public function deleteCalendar($calendarId) { } public function getCalendarObjects($calendarId) { switch ($calendarId) { case 1: return [ [ 'id' => 1, 'calendarid' => 1, 'uri' => 'event1.ics', ], [ 'id' => 2, 'calendarid' => 1, 'uri' => 'task1.ics', ], ]; case 2: return [ [ 'id' => 3, 'calendarid' => 2, 'uri' => 'shared-event.ics', ], ]; } } public function getCalendarObject($calendarId, $objectUri) { switch ($objectUri) { case 'event1.ics': return [ 'id' => 1, 'calendarid' => 1, 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ]; case 'task1.ics': return [ 'id' => 2, 'calendarid' => 1, 'uri' => 'task1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n", ]; case 'shared-event.ics': return [ 'id' => 3, 'calendarid' => 2, 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:shared\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ]; } } public function createCalendarObject($calendarId, $objectUri, $calendarData) { } public function updateCalendarObject($calendarId, $objectUri, $calendarData) { } public function deleteCalendarObject($calendarId, $objectUri) { } }