Mercurial > hg > rc1
comparison 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 |
comparison
equal
deleted
inserted
replaced
6:cec75ba50afc | 7:430dbd5346f7 |
---|---|
1 <?php | |
2 | |
3 namespace Sabre\VObject; | |
4 | |
5 class FreeBusyGeneratorTest extends \PHPUnit_Framework_TestCase { | |
6 | |
7 function getInput() { | |
8 | |
9 $tests = array(); | |
10 | |
11 $blob = <<<ICS | |
12 BEGIN:VCALENDAR | |
13 BEGIN:VEVENT | |
14 UID:foobar | |
15 DTSTART:20110101T120000Z | |
16 DTEND:20110101T130000Z | |
17 END:VEVENT | |
18 END:VCALENDAR | |
19 ICS; | |
20 | |
21 $tests[] = array( | |
22 $blob, | |
23 "20110101T120000Z/20110101T130000Z" | |
24 ); | |
25 | |
26 // opaque, shows up | |
27 $blob = <<<ICS | |
28 BEGIN:VCALENDAR | |
29 BEGIN:VEVENT | |
30 UID:foobar2 | |
31 TRANSP:OPAQUE | |
32 DTSTART:20110101T130000Z | |
33 DTEND:20110101T140000Z | |
34 END:VEVENT | |
35 END:VCALENDAR | |
36 ICS; | |
37 | |
38 $tests[] = array( | |
39 $blob, | |
40 "20110101T130000Z/20110101T140000Z" | |
41 ); | |
42 | |
43 // transparent, hidden | |
44 $blob = <<<ICS | |
45 BEGIN:VCALENDAR | |
46 BEGIN:VEVENT | |
47 UID:foobar3 | |
48 TRANSP:TRANSPARENT | |
49 DTSTART:20110101T140000Z | |
50 DTEND:20110101T150000Z | |
51 END:VEVENT | |
52 END:VCALENDAR | |
53 ICS; | |
54 | |
55 $tests[] = array( | |
56 $blob, | |
57 null, | |
58 ); | |
59 | |
60 // cancelled, hidden | |
61 $blob = <<<ICS | |
62 BEGIN:VCALENDAR | |
63 BEGIN:VEVENT | |
64 UID:foobar4 | |
65 STATUS:CANCELLED | |
66 DTSTART:20110101T160000Z | |
67 DTEND:20110101T170000Z | |
68 END:VEVENT | |
69 END:VCALENDAR | |
70 ICS; | |
71 | |
72 $tests[] = array( | |
73 $blob, | |
74 null, | |
75 ); | |
76 | |
77 // tentative, shows up | |
78 $blob = <<<ICS | |
79 BEGIN:VCALENDAR | |
80 BEGIN:VEVENT | |
81 UID:foobar5 | |
82 STATUS:TENTATIVE | |
83 DTSTART:20110101T180000Z | |
84 DTEND:20110101T190000Z | |
85 END:VEVENT | |
86 END:VCALENDAR | |
87 ICS; | |
88 | |
89 $tests[] = array( | |
90 $blob, | |
91 '20110101T180000Z/20110101T190000Z', | |
92 ); | |
93 | |
94 // outside of time-range, hidden | |
95 $blob = <<<ICS | |
96 BEGIN:VCALENDAR | |
97 BEGIN:VEVENT | |
98 UID:foobar6 | |
99 DTSTART:20110101T090000Z | |
100 DTEND:20110101T100000Z | |
101 END:VEVENT | |
102 END:VCALENDAR | |
103 ICS; | |
104 | |
105 $tests[] = array( | |
106 $blob, | |
107 null, | |
108 ); | |
109 | |
110 // outside of time-range, hidden | |
111 $blob = <<<ICS | |
112 BEGIN:VCALENDAR | |
113 BEGIN:VEVENT | |
114 UID:foobar7 | |
115 DTSTART:20110104T090000Z | |
116 DTEND:20110104T100000Z | |
117 END:VEVENT | |
118 END:VCALENDAR | |
119 ICS; | |
120 | |
121 $tests[] = array( | |
122 $blob, | |
123 null, | |
124 ); | |
125 | |
126 // using duration, shows up | |
127 $blob = <<<ICS | |
128 BEGIN:VCALENDAR | |
129 BEGIN:VEVENT | |
130 UID:foobar8 | |
131 DTSTART:20110101T190000Z | |
132 DURATION:PT1H | |
133 END:VEVENT | |
134 END:VCALENDAR | |
135 ICS; | |
136 | |
137 $tests[] = array( | |
138 $blob, | |
139 '20110101T190000Z/20110101T200000Z', | |
140 ); | |
141 | |
142 // Day-long event, shows up | |
143 $blob = <<<ICS | |
144 BEGIN:VCALENDAR | |
145 BEGIN:VEVENT | |
146 UID:foobar9 | |
147 DTSTART;VALUE=DATE:20110102 | |
148 END:VEVENT | |
149 END:VCALENDAR | |
150 ICS; | |
151 | |
152 $tests[] = array( | |
153 $blob, | |
154 '20110102T000000Z/20110103T000000Z', | |
155 ); | |
156 | |
157 | |
158 // No duration, does not show up | |
159 $blob = <<<ICS | |
160 BEGIN:VCALENDAR | |
161 BEGIN:VEVENT | |
162 UID:foobar10 | |
163 DTSTART:20110101T200000Z | |
164 END:VEVENT | |
165 END:VCALENDAR | |
166 ICS; | |
167 | |
168 $tests[] = array( | |
169 $blob, | |
170 null, | |
171 ); | |
172 | |
173 // encoded as object, shows up | |
174 $blob = <<<ICS | |
175 BEGIN:VCALENDAR | |
176 BEGIN:VEVENT | |
177 UID:foobar11 | |
178 DTSTART:20110101T210000Z | |
179 DURATION:PT1H | |
180 END:VEVENT | |
181 END:VCALENDAR | |
182 ICS; | |
183 | |
184 $tests[] = array( | |
185 Reader::read($blob), | |
186 '20110101T210000Z/20110101T220000Z', | |
187 ); | |
188 | |
189 // Freebusy. Some parts show up | |
190 $blob = <<<ICS | |
191 BEGIN:VCALENDAR | |
192 BEGIN:VFREEBUSY | |
193 FREEBUSY:20110103T010000Z/20110103T020000Z | |
194 FREEBUSY;FBTYPE=FREE:20110103T020000Z/20110103T030000Z | |
195 FREEBUSY:20110103T030000Z/20110103T040000Z,20110103T040000Z/20110103T050000Z | |
196 FREEBUSY:20120101T000000Z/20120101T010000Z | |
197 FREEBUSY:20110103T050000Z/PT1H | |
198 END:VFREEBUSY | |
199 END:VCALENDAR | |
200 ICS; | |
201 | |
202 $tests[] = array( | |
203 Reader::read($blob), | |
204 array( | |
205 '20110103T010000Z/20110103T020000Z', | |
206 '20110103T030000Z/20110103T040000Z', | |
207 '20110103T040000Z/20110103T050000Z', | |
208 '20110103T050000Z/20110103T060000Z', | |
209 ) | |
210 ); | |
211 | |
212 | |
213 // Yearly recurrence rule, shows up | |
214 $blob = <<<ICS | |
215 BEGIN:VCALENDAR | |
216 BEGIN:VEVENT | |
217 UID:foobar13 | |
218 DTSTART:20100101T220000Z | |
219 DTEND:20100101T230000Z | |
220 RRULE:FREQ=YEARLY | |
221 END:VEVENT | |
222 END:VCALENDAR | |
223 ICS; | |
224 | |
225 $tests[] = array( | |
226 Reader::read($blob), | |
227 '20110101T220000Z/20110101T230000Z', | |
228 ); | |
229 | |
230 | |
231 // Yearly recurrence rule + duration, shows up | |
232 $blob = <<<ICS | |
233 BEGIN:VCALENDAR | |
234 BEGIN:VEVENT | |
235 UID:foobar14 | |
236 DTSTART:20100101T230000Z | |
237 DURATION:PT1H | |
238 RRULE:FREQ=YEARLY | |
239 END:VEVENT | |
240 END:VCALENDAR | |
241 ICS; | |
242 | |
243 $tests[] = array( | |
244 Reader::read($blob), | |
245 '20110101T230000Z/20110102T000000Z', | |
246 ); | |
247 | |
248 // Floating time, no timezone | |
249 $blob = <<<ICS | |
250 BEGIN:VCALENDAR | |
251 BEGIN:VEVENT | |
252 UID:foobar | |
253 DTSTART:20110101T120000 | |
254 DTEND:20110101T130000 | |
255 END:VEVENT | |
256 END:VCALENDAR | |
257 ICS; | |
258 | |
259 $tests[] = array( | |
260 $blob, | |
261 "20110101T120000Z/20110101T130000Z" | |
262 ); | |
263 | |
264 // Floating time + reference timezone | |
265 $blob = <<<ICS | |
266 BEGIN:VCALENDAR | |
267 BEGIN:VEVENT | |
268 UID:foobar | |
269 DTSTART:20110101T120000 | |
270 DTEND:20110101T130000 | |
271 END:VEVENT | |
272 END:VCALENDAR | |
273 ICS; | |
274 | |
275 $tests[] = array( | |
276 $blob, | |
277 "20110101T170000Z/20110101T180000Z", | |
278 new \DateTimeZone('America/Toronto') | |
279 ); | |
280 | |
281 // All-day event | |
282 $blob = <<<ICS | |
283 BEGIN:VCALENDAR | |
284 BEGIN:VEVENT | |
285 UID:foobar | |
286 DTSTART;VALUE=DATE:20110101 | |
287 END:VEVENT | |
288 END:VCALENDAR | |
289 ICS; | |
290 | |
291 $tests[] = array( | |
292 $blob, | |
293 "20110101T000000Z/20110102T000000Z" | |
294 ); | |
295 | |
296 // All-day event + reference timezone | |
297 $blob = <<<ICS | |
298 BEGIN:VCALENDAR | |
299 BEGIN:VEVENT | |
300 UID:foobar | |
301 DTSTART;VALUE=DATE:20110101 | |
302 END:VEVENT | |
303 END:VCALENDAR | |
304 ICS; | |
305 | |
306 $tests[] = array( | |
307 $blob, | |
308 "20110101T050000Z/20110102T050000Z", | |
309 new \DateTimeZone('America/Toronto') | |
310 ); | |
311 return $tests; | |
312 | |
313 } | |
314 | |
315 /** | |
316 * @dataProvider getInput | |
317 */ | |
318 function testGenerator($input, $expected, $timeZone = null) { | |
319 | |
320 $gen = new FreeBusyGenerator( | |
321 new \DateTime('20110101T110000Z', new \DateTimeZone('UTC')), | |
322 new \DateTime('20110103T110000Z', new \DateTimeZone('UTC')), | |
323 $input, | |
324 $timeZone | |
325 ); | |
326 | |
327 $result = $gen->getResult(); | |
328 | |
329 $expected = (array)$expected; | |
330 | |
331 $freebusy = $result->VFREEBUSY->select('FREEBUSY'); | |
332 | |
333 foreach($freebusy as $fb) { | |
334 | |
335 $this->assertContains((string)$fb, $expected, "$fb did not appear in our list of expected freebusy strings. This is concerning!"); | |
336 | |
337 $k = array_search((string)$fb, $expected); | |
338 unset($expected[$k]); | |
339 | |
340 } | |
341 $this->assertTrue( | |
342 count($expected) === 0, | |
343 'There were elements in the expected array that were not found in the output: ' . "\n" . print_r($expected,true) . "\n" . $result->serialize() | |
344 ); | |
345 | |
346 } | |
347 | |
348 function testGeneratorBaseObject() { | |
349 | |
350 $obj = new Component\VCalendar(); | |
351 $obj->METHOD = 'PUBLISH'; | |
352 | |
353 $gen = new FreeBusyGenerator(); | |
354 $gen->setObjects(array()); | |
355 $gen->setBaseObject($obj); | |
356 | |
357 $result = $gen->getResult(); | |
358 | |
359 $this->assertEquals('PUBLISH', $result->METHOD->getValue()); | |
360 | |
361 } | |
362 | |
363 /** | |
364 * @expectedException InvalidArgumentException | |
365 */ | |
366 function testInvalidArg() { | |
367 | |
368 $gen = new FreeBusyGenerator( | |
369 new \DateTime('2012-01-01'), | |
370 new \DateTime('2012-12-31'), | |
371 new \StdClass() | |
372 ); | |
373 | |
374 } | |
375 | |
376 } |