xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV\Backend;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse
6*a1a3b679SAndreas Boehler    Sabre\DAV\PropPatch;
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehlerclass AbstractTest extends \PHPUnit_Framework_TestCase {
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehler    function testUpdateCalendar() {
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler        $abstract = new AbstractMock();
13*a1a3b679SAndreas Boehler        $propPatch = new PropPatch( ['{DAV:}displayname' => 'anything'] );
14*a1a3b679SAndreas Boehler
15*a1a3b679SAndreas Boehler        $abstract->updateCalendar('randomid', $propPatch);
16*a1a3b679SAndreas Boehler        $result = $propPatch->commit();
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler        $this->assertFalse($result);
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    }
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler    function testCalendarQuery() {
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        $abstract = new AbstractMock();
25*a1a3b679SAndreas Boehler        $filters = array(
26*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
27*a1a3b679SAndreas Boehler            'comp-filters' => array(
28*a1a3b679SAndreas Boehler                array(
29*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
30*a1a3b679SAndreas Boehler                    'comp-filters' => array(),
31*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
32*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
33*a1a3b679SAndreas Boehler                    'time-range' => null,
34*a1a3b679SAndreas Boehler                ),
35*a1a3b679SAndreas Boehler            ),
36*a1a3b679SAndreas Boehler            'prop-filters' => array(),
37*a1a3b679SAndreas Boehler            'is-not-defined' => false,
38*a1a3b679SAndreas Boehler            'time-range' => null,
39*a1a3b679SAndreas Boehler        );
40*a1a3b679SAndreas Boehler
41*a1a3b679SAndreas Boehler        $this->assertEquals(array(
42*a1a3b679SAndreas Boehler            'event1.ics',
43*a1a3b679SAndreas Boehler        ), $abstract->calendarQuery(1, $filters));
44*a1a3b679SAndreas Boehler
45*a1a3b679SAndreas Boehler    }
46*a1a3b679SAndreas Boehler
47*a1a3b679SAndreas Boehler    function testGetCalendarObjectByUID() {
48*a1a3b679SAndreas Boehler
49*a1a3b679SAndreas Boehler        $abstract = new AbstractMock();
50*a1a3b679SAndreas Boehler        $this->assertNull(
51*a1a3b679SAndreas Boehler            $abstract->getCalendarObjectByUID('principal1', 'zim')
52*a1a3b679SAndreas Boehler        );
53*a1a3b679SAndreas Boehler        $this->assertEquals(
54*a1a3b679SAndreas Boehler            'cal1/event1.ics',
55*a1a3b679SAndreas Boehler            $abstract->getCalendarObjectByUID('principal1', 'foo')
56*a1a3b679SAndreas Boehler        );
57*a1a3b679SAndreas Boehler        $this->assertNull(
58*a1a3b679SAndreas Boehler            $abstract->getCalendarObjectByUID('principal3', 'foo')
59*a1a3b679SAndreas Boehler        );
60*a1a3b679SAndreas Boehler        $this->assertNull(
61*a1a3b679SAndreas Boehler            $abstract->getCalendarObjectByUID('principal1', 'shared')
62*a1a3b679SAndreas Boehler        );
63*a1a3b679SAndreas Boehler
64*a1a3b679SAndreas Boehler    }
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler    function testGetMultipleCalendarObjects() {
67*a1a3b679SAndreas Boehler
68*a1a3b679SAndreas Boehler        $abstract = new AbstractMock();
69*a1a3b679SAndreas Boehler        $result = $abstract->getMultipleCalendarObjects(1, [
70*a1a3b679SAndreas Boehler            'event1.ics',
71*a1a3b679SAndreas Boehler            'task1.ics',
72*a1a3b679SAndreas Boehler        ]);
73*a1a3b679SAndreas Boehler
74*a1a3b679SAndreas Boehler        $expected = [
75*a1a3b679SAndreas Boehler            array(
76*a1a3b679SAndreas Boehler                'id' => 1,
77*a1a3b679SAndreas Boehler                'calendarid' => 1,
78*a1a3b679SAndreas Boehler                'uri' => 'event1.ics',
79*a1a3b679SAndreas Boehler                'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
80*a1a3b679SAndreas Boehler            ),
81*a1a3b679SAndreas Boehler            array(
82*a1a3b679SAndreas Boehler                'id' => 2,
83*a1a3b679SAndreas Boehler                'calendarid' => 1,
84*a1a3b679SAndreas Boehler                'uri' => 'task1.ics',
85*a1a3b679SAndreas Boehler                'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
86*a1a3b679SAndreas Boehler            ),
87*a1a3b679SAndreas Boehler        ];
88*a1a3b679SAndreas Boehler
89*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $result);
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler    }
93*a1a3b679SAndreas Boehler
94*a1a3b679SAndreas Boehler}
95*a1a3b679SAndreas Boehler
96*a1a3b679SAndreas Boehlerclass AbstractMock extends AbstractBackend {
97*a1a3b679SAndreas Boehler
98*a1a3b679SAndreas Boehler    function getCalendarsForUser($principalUri) {
99*a1a3b679SAndreas Boehler
100*a1a3b679SAndreas Boehler        return array(
101*a1a3b679SAndreas Boehler            array(
102*a1a3b679SAndreas Boehler                'id' => 1,
103*a1a3b679SAndreas Boehler                'principaluri' => 'principal1',
104*a1a3b679SAndreas Boehler                'uri' => 'cal1',
105*a1a3b679SAndreas Boehler            ),
106*a1a3b679SAndreas Boehler            array(
107*a1a3b679SAndreas Boehler                'id' => 2,
108*a1a3b679SAndreas Boehler                'principaluri' => 'principal1',
109*a1a3b679SAndreas Boehler                '{http://sabredav.org/ns}owner-principal' => 'principal2',
110*a1a3b679SAndreas Boehler                'uri' => 'cal1',
111*a1a3b679SAndreas Boehler            ),
112*a1a3b679SAndreas Boehler        );
113*a1a3b679SAndreas Boehler
114*a1a3b679SAndreas Boehler    }
115*a1a3b679SAndreas Boehler    function createCalendar($principalUri,$calendarUri,array $properties) { }
116*a1a3b679SAndreas Boehler    function deleteCalendar($calendarId) { }
117*a1a3b679SAndreas Boehler    function getCalendarObjects($calendarId) {
118*a1a3b679SAndreas Boehler
119*a1a3b679SAndreas Boehler        switch($calendarId) {
120*a1a3b679SAndreas Boehler            case 1:
121*a1a3b679SAndreas Boehler                return [
122*a1a3b679SAndreas Boehler                    [
123*a1a3b679SAndreas Boehler                        'id' => 1,
124*a1a3b679SAndreas Boehler                        'calendarid' => 1,
125*a1a3b679SAndreas Boehler                        'uri' => 'event1.ics',
126*a1a3b679SAndreas Boehler                    ],
127*a1a3b679SAndreas Boehler                    [
128*a1a3b679SAndreas Boehler                        'id' => 2,
129*a1a3b679SAndreas Boehler                        'calendarid' => 1,
130*a1a3b679SAndreas Boehler                        'uri' => 'task1.ics',
131*a1a3b679SAndreas Boehler                    ],
132*a1a3b679SAndreas Boehler                ];
133*a1a3b679SAndreas Boehler            case 2:
134*a1a3b679SAndreas Boehler                return [
135*a1a3b679SAndreas Boehler                    [
136*a1a3b679SAndreas Boehler                        'id' => 3,
137*a1a3b679SAndreas Boehler                        'calendarid' => 2,
138*a1a3b679SAndreas Boehler                        'uri' => 'shared-event.ics',
139*a1a3b679SAndreas Boehler                    ]
140*a1a3b679SAndreas Boehler                ];
141*a1a3b679SAndreas Boehler        }
142*a1a3b679SAndreas Boehler
143*a1a3b679SAndreas Boehler    }
144*a1a3b679SAndreas Boehler
145*a1a3b679SAndreas Boehler    function getCalendarObject($calendarId, $objectUri) {
146*a1a3b679SAndreas Boehler
147*a1a3b679SAndreas Boehler        switch($objectUri) {
148*a1a3b679SAndreas Boehler
149*a1a3b679SAndreas Boehler            case 'event1.ics' :
150*a1a3b679SAndreas Boehler                return array(
151*a1a3b679SAndreas Boehler                    'id' => 1,
152*a1a3b679SAndreas Boehler                    'calendarid' => 1,
153*a1a3b679SAndreas Boehler                    'uri' => 'event1.ics',
154*a1a3b679SAndreas Boehler                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
155*a1a3b679SAndreas Boehler                );
156*a1a3b679SAndreas Boehler            case 'task1.ics' :
157*a1a3b679SAndreas Boehler                return array(
158*a1a3b679SAndreas Boehler                    'id' => 2,
159*a1a3b679SAndreas Boehler                    'calendarid' => 1,
160*a1a3b679SAndreas Boehler                    'uri' => 'task1.ics',
161*a1a3b679SAndreas Boehler                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
162*a1a3b679SAndreas Boehler                );
163*a1a3b679SAndreas Boehler            case 'shared-event.ics' :
164*a1a3b679SAndreas Boehler                return array(
165*a1a3b679SAndreas Boehler                    'id' => 3,
166*a1a3b679SAndreas Boehler                    'calendarid' => 2,
167*a1a3b679SAndreas Boehler                    'uri' => 'event1.ics',
168*a1a3b679SAndreas Boehler                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:shared\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
169*a1a3b679SAndreas Boehler                );
170*a1a3b679SAndreas Boehler
171*a1a3b679SAndreas Boehler        }
172*a1a3b679SAndreas Boehler
173*a1a3b679SAndreas Boehler    }
174*a1a3b679SAndreas Boehler    function createCalendarObject($calendarId,$objectUri,$calendarData) { }
175*a1a3b679SAndreas Boehler    function updateCalendarObject($calendarId,$objectUri,$calendarData) { }
176*a1a3b679SAndreas Boehler    function deleteCalendarObject($calendarId,$objectUri) { }
177*a1a3b679SAndreas Boehler
178*a1a3b679SAndreas Boehler}
179