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