xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\VObject;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehlerclass CalendarQueryVAlarmTest extends \PHPUnit_Framework_TestCase {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler    /**
10*a1a3b679SAndreas Boehler     * This test is specifically for a time-range query on a VALARM, contained
11*a1a3b679SAndreas Boehler     * in a VEVENT that's recurring
12*a1a3b679SAndreas Boehler     */
13*a1a3b679SAndreas Boehler    function testValarm() {
14*a1a3b679SAndreas Boehler
15*a1a3b679SAndreas Boehler        $vcalendar = new VObject\Component\VCalendar();
16*a1a3b679SAndreas Boehler
17*a1a3b679SAndreas Boehler        $vevent = $vcalendar->createComponent('VEVENT');
18*a1a3b679SAndreas Boehler        $vevent->RRULE = 'FREQ=MONTHLY';
19*a1a3b679SAndreas Boehler        $vevent->DTSTART = '20120101T120000Z';
20*a1a3b679SAndreas Boehler        $vevent->UID = 'bla';
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler        $valarm = $vcalendar->createComponent('VALARM');
23*a1a3b679SAndreas Boehler        $valarm->TRIGGER = '-P15D';
24*a1a3b679SAndreas Boehler        $vevent->add($valarm);
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler
27*a1a3b679SAndreas Boehler        $vcalendar->add($vevent);
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler        $filter = array(
30*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
31*a1a3b679SAndreas Boehler            'is-not-defined' => false,
32*a1a3b679SAndreas Boehler            'time-range' => null,
33*a1a3b679SAndreas Boehler            'prop-filters' => array(),
34*a1a3b679SAndreas Boehler            'comp-filters' => array(
35*a1a3b679SAndreas Boehler                array(
36*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
37*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
38*a1a3b679SAndreas Boehler                    'time-range' => null,
39*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
40*a1a3b679SAndreas Boehler                    'comp-filters' => array(
41*a1a3b679SAndreas Boehler                        array(
42*a1a3b679SAndreas Boehler                            'name' => 'VALARM',
43*a1a3b679SAndreas Boehler                            'is-not-defined' => false,
44*a1a3b679SAndreas Boehler                            'prop-filters' => array(),
45*a1a3b679SAndreas Boehler                            'comp-filters' => array(),
46*a1a3b679SAndreas Boehler                            'time-range' => array(
47*a1a3b679SAndreas Boehler                                'start' => new \DateTime('2012-05-10'),
48*a1a3b679SAndreas Boehler                                'end' => new \DateTime('2012-05-20'),
49*a1a3b679SAndreas Boehler                            ),
50*a1a3b679SAndreas Boehler                        ),
51*a1a3b679SAndreas Boehler                    ),
52*a1a3b679SAndreas Boehler                ),
53*a1a3b679SAndreas Boehler            ),
54*a1a3b679SAndreas Boehler        );
55*a1a3b679SAndreas Boehler
56*a1a3b679SAndreas Boehler        $validator = new CalendarQueryValidator();
57*a1a3b679SAndreas Boehler        $this->assertTrue($validator->validate($vcalendar, $filter));
58*a1a3b679SAndreas Boehler
59*a1a3b679SAndreas Boehler        $vcalendar = new VObject\Component\VCalendar();
60*a1a3b679SAndreas Boehler
61*a1a3b679SAndreas Boehler        // A limited recurrence rule, should return false
62*a1a3b679SAndreas Boehler        $vevent = $vcalendar->createComponent('VEVENT');
63*a1a3b679SAndreas Boehler        $vevent->RRULE = 'FREQ=MONTHLY;COUNT=1';
64*a1a3b679SAndreas Boehler        $vevent->DTSTART = '20120101T120000Z';
65*a1a3b679SAndreas Boehler        $vevent->UID = 'bla';
66*a1a3b679SAndreas Boehler
67*a1a3b679SAndreas Boehler        $valarm = $vcalendar->createComponent('VALARM');
68*a1a3b679SAndreas Boehler        $valarm->TRIGGER = '-P15D';
69*a1a3b679SAndreas Boehler        $vevent->add($valarm);
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler        $vcalendar->add($vevent);
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler        $this->assertFalse($validator->validate($vcalendar, $filter));
74*a1a3b679SAndreas Boehler    }
75*a1a3b679SAndreas Boehler
76*a1a3b679SAndreas Boehler    function testAlarmWayBefore() {
77*a1a3b679SAndreas Boehler
78*a1a3b679SAndreas Boehler        $vcalendar = new VObject\Component\VCalendar();
79*a1a3b679SAndreas Boehler
80*a1a3b679SAndreas Boehler        $vevent = $vcalendar->createComponent('VEVENT');
81*a1a3b679SAndreas Boehler        $vevent->DTSTART = '20120101T120000Z';
82*a1a3b679SAndreas Boehler        $vevent->UID = 'bla';
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler        $valarm = $vcalendar->createComponent('VALARM');
85*a1a3b679SAndreas Boehler        $valarm->TRIGGER = '-P2W1D';
86*a1a3b679SAndreas Boehler        $vevent->add($valarm);
87*a1a3b679SAndreas Boehler
88*a1a3b679SAndreas Boehler        $vcalendar->add($vevent);
89*a1a3b679SAndreas Boehler
90*a1a3b679SAndreas Boehler        $filter = array(
91*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
92*a1a3b679SAndreas Boehler            'is-not-defined' => false,
93*a1a3b679SAndreas Boehler            'time-range' => null,
94*a1a3b679SAndreas Boehler            'prop-filters' => array(),
95*a1a3b679SAndreas Boehler            'comp-filters' => array(
96*a1a3b679SAndreas Boehler                array(
97*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
98*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
99*a1a3b679SAndreas Boehler                    'time-range' => null,
100*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
101*a1a3b679SAndreas Boehler                    'comp-filters' => array(
102*a1a3b679SAndreas Boehler                        array(
103*a1a3b679SAndreas Boehler                            'name' => 'VALARM',
104*a1a3b679SAndreas Boehler                            'is-not-defined' => false,
105*a1a3b679SAndreas Boehler                            'prop-filters' => array(),
106*a1a3b679SAndreas Boehler                            'comp-filters' => array(),
107*a1a3b679SAndreas Boehler                            'time-range' => array(
108*a1a3b679SAndreas Boehler                                'start' => new \DateTime('2011-12-10'),
109*a1a3b679SAndreas Boehler                                'end' => new \DateTime('2011-12-20'),
110*a1a3b679SAndreas Boehler                            ),
111*a1a3b679SAndreas Boehler                        ),
112*a1a3b679SAndreas Boehler                    ),
113*a1a3b679SAndreas Boehler                ),
114*a1a3b679SAndreas Boehler            ),
115*a1a3b679SAndreas Boehler        );
116*a1a3b679SAndreas Boehler
117*a1a3b679SAndreas Boehler        $validator = new CalendarQueryValidator();
118*a1a3b679SAndreas Boehler        $this->assertTrue($validator->validate($vcalendar, $filter));
119*a1a3b679SAndreas Boehler
120*a1a3b679SAndreas Boehler    }
121*a1a3b679SAndreas Boehler
122*a1a3b679SAndreas Boehler}
123