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