xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/Component/VTodoTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\Component;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse
6*a1a3b679SAndreas Boehler    Sabre\VObject\Component,
7*a1a3b679SAndreas Boehler    Sabre\VObject\Reader;
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehlerclass VTodoTest extends \PHPUnit_Framework_TestCase {
10*a1a3b679SAndreas Boehler
11*a1a3b679SAndreas Boehler    /**
12*a1a3b679SAndreas Boehler     * @dataProvider timeRangeTestData
13*a1a3b679SAndreas Boehler     */
14*a1a3b679SAndreas Boehler    public function testInTimeRange(VTodo $vtodo,$start,$end,$outcome) {
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler        $this->assertEquals($outcome, $vtodo->isInTimeRange($start, $end));
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler    }
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    public function timeRangeTestData() {
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler        $tests = array();
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        $calendar = new VCalendar();
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler        $vtodo = $calendar->createComponent('VTODO');
27*a1a3b679SAndreas Boehler        $vtodo->DTSTART = '20111223T120000Z';
28*a1a3b679SAndreas Boehler        $tests[] = array($vtodo, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
29*a1a3b679SAndreas Boehler        $tests[] = array($vtodo, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
30*a1a3b679SAndreas Boehler
31*a1a3b679SAndreas Boehler        $vtodo2 = clone $vtodo;
32*a1a3b679SAndreas Boehler        $vtodo2->DURATION = 'P1D';
33*a1a3b679SAndreas Boehler        $tests[] = array($vtodo2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
34*a1a3b679SAndreas Boehler        $tests[] = array($vtodo2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler        $vtodo3 = clone $vtodo;
37*a1a3b679SAndreas Boehler        $vtodo3->DUE = '20111225';
38*a1a3b679SAndreas Boehler        $tests[] = array($vtodo3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
39*a1a3b679SAndreas Boehler        $tests[] = array($vtodo3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
40*a1a3b679SAndreas Boehler
41*a1a3b679SAndreas Boehler        $vtodo4 = $calendar->createComponent('VTODO');
42*a1a3b679SAndreas Boehler        $vtodo4->DUE = '20111225';
43*a1a3b679SAndreas Boehler        $tests[] = array($vtodo4, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
44*a1a3b679SAndreas Boehler        $tests[] = array($vtodo4, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
45*a1a3b679SAndreas Boehler
46*a1a3b679SAndreas Boehler        $vtodo5 = $calendar->createComponent('VTODO');
47*a1a3b679SAndreas Boehler        $vtodo5->COMPLETED = '20111225';
48*a1a3b679SAndreas Boehler        $tests[] = array($vtodo5, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
49*a1a3b679SAndreas Boehler        $tests[] = array($vtodo5, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler        $vtodo6 = $calendar->createComponent('VTODO');
52*a1a3b679SAndreas Boehler        $vtodo6->CREATED = '20111225';
53*a1a3b679SAndreas Boehler        $tests[] = array($vtodo6, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
54*a1a3b679SAndreas Boehler        $tests[] = array($vtodo6, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
55*a1a3b679SAndreas Boehler
56*a1a3b679SAndreas Boehler        $vtodo7 = $calendar->createComponent('VTODO');
57*a1a3b679SAndreas Boehler        $vtodo7->CREATED = '20111225';
58*a1a3b679SAndreas Boehler        $vtodo7->COMPLETED = '20111226';
59*a1a3b679SAndreas Boehler        $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
60*a1a3b679SAndreas Boehler        $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
61*a1a3b679SAndreas Boehler
62*a1a3b679SAndreas Boehler        $vtodo7 = $calendar->createComponent('VTODO');
63*a1a3b679SAndreas Boehler        $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
64*a1a3b679SAndreas Boehler        $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), true);
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler        return $tests;
67*a1a3b679SAndreas Boehler
68*a1a3b679SAndreas Boehler    }
69*a1a3b679SAndreas Boehler
70*a1a3b679SAndreas Boehler    public function testValidate() {
71*a1a3b679SAndreas Boehler
72*a1a3b679SAndreas Boehler        $input = <<<HI
73*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
74*a1a3b679SAndreas BoehlerVERSION:2.0
75*a1a3b679SAndreas BoehlerPRODID:YoYo
76*a1a3b679SAndreas BoehlerBEGIN:VTODO
77*a1a3b679SAndreas BoehlerUID:1234-21355-123156
78*a1a3b679SAndreas BoehlerDTSTAMP:20140402T183400Z
79*a1a3b679SAndreas BoehlerEND:VTODO
80*a1a3b679SAndreas BoehlerEND:VCALENDAR
81*a1a3b679SAndreas BoehlerHI;
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler        $obj = Reader::read($input);
84*a1a3b679SAndreas Boehler
85*a1a3b679SAndreas Boehler        $warnings = $obj->validate();
86*a1a3b679SAndreas Boehler        $messages = array();
87*a1a3b679SAndreas Boehler        foreach($warnings as $warning) {
88*a1a3b679SAndreas Boehler            $messages[] = $warning['message'];
89*a1a3b679SAndreas Boehler        }
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler        $this->assertEquals(array(), $messages);
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler    }
94*a1a3b679SAndreas Boehler
95*a1a3b679SAndreas Boehler    public function testValidateInvalid() {
96*a1a3b679SAndreas Boehler
97*a1a3b679SAndreas Boehler        $input = <<<HI
98*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
99*a1a3b679SAndreas BoehlerVERSION:2.0
100*a1a3b679SAndreas BoehlerPRODID:YoYo
101*a1a3b679SAndreas BoehlerBEGIN:VTODO
102*a1a3b679SAndreas BoehlerEND:VTODO
103*a1a3b679SAndreas BoehlerEND:VCALENDAR
104*a1a3b679SAndreas BoehlerHI;
105*a1a3b679SAndreas Boehler
106*a1a3b679SAndreas Boehler        $obj = Reader::read($input);
107*a1a3b679SAndreas Boehler
108*a1a3b679SAndreas Boehler        $warnings = $obj->validate();
109*a1a3b679SAndreas Boehler        $messages = array();
110*a1a3b679SAndreas Boehler        foreach($warnings as $warning) {
111*a1a3b679SAndreas Boehler            $messages[] = $warning['message'];
112*a1a3b679SAndreas Boehler        }
113*a1a3b679SAndreas Boehler
114*a1a3b679SAndreas Boehler        $this->assertEquals(array(
115*a1a3b679SAndreas Boehler            "UID MUST appear exactly once in a VTODO component",
116*a1a3b679SAndreas Boehler            "DTSTAMP MUST appear exactly once in a VTODO component",
117*a1a3b679SAndreas Boehler        ), $messages);
118*a1a3b679SAndreas Boehler
119*a1a3b679SAndreas Boehler    }
120*a1a3b679SAndreas Boehler
121*a1a3b679SAndreas Boehler    public function testValidateDUEDTSTARTMisMatch() {
122*a1a3b679SAndreas Boehler
123*a1a3b679SAndreas Boehler        $input = <<<HI
124*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
125*a1a3b679SAndreas BoehlerVERSION:2.0
126*a1a3b679SAndreas BoehlerPRODID:YoYo
127*a1a3b679SAndreas BoehlerBEGIN:VTODO
128*a1a3b679SAndreas BoehlerUID:FOO
129*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE-TIME:20140520T131600Z
130*a1a3b679SAndreas BoehlerDUE;VALUE=DATE:20140520
131*a1a3b679SAndreas BoehlerDTSTAMP;VALUE=DATE-TIME:20140520T131600Z
132*a1a3b679SAndreas BoehlerEND:VTODO
133*a1a3b679SAndreas BoehlerEND:VCALENDAR
134*a1a3b679SAndreas BoehlerHI;
135*a1a3b679SAndreas Boehler
136*a1a3b679SAndreas Boehler        $obj = Reader::read($input);
137*a1a3b679SAndreas Boehler
138*a1a3b679SAndreas Boehler        $warnings = $obj->validate();
139*a1a3b679SAndreas Boehler        $messages = array();
140*a1a3b679SAndreas Boehler        foreach($warnings as $warning) {
141*a1a3b679SAndreas Boehler            $messages[] = $warning['message'];
142*a1a3b679SAndreas Boehler        }
143*a1a3b679SAndreas Boehler
144*a1a3b679SAndreas Boehler        $this->assertEquals(array(
145*a1a3b679SAndreas Boehler            "The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART",
146*a1a3b679SAndreas Boehler        ), $messages);
147*a1a3b679SAndreas Boehler
148*a1a3b679SAndreas Boehler    }
149*a1a3b679SAndreas Boehler
150*a1a3b679SAndreas Boehler    public function testValidateDUEbeforeDTSTART() {
151*a1a3b679SAndreas Boehler
152*a1a3b679SAndreas Boehler        $input = <<<HI
153*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
154*a1a3b679SAndreas BoehlerVERSION:2.0
155*a1a3b679SAndreas BoehlerPRODID:YoYo
156*a1a3b679SAndreas BoehlerBEGIN:VTODO
157*a1a3b679SAndreas BoehlerUID:FOO
158*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20140520
159*a1a3b679SAndreas BoehlerDUE;VALUE=DATE:20140518
160*a1a3b679SAndreas BoehlerDTSTAMP;VALUE=DATE-TIME:20140520T131600Z
161*a1a3b679SAndreas BoehlerEND:VTODO
162*a1a3b679SAndreas BoehlerEND:VCALENDAR
163*a1a3b679SAndreas BoehlerHI;
164*a1a3b679SAndreas Boehler
165*a1a3b679SAndreas Boehler        $obj = Reader::read($input);
166*a1a3b679SAndreas Boehler
167*a1a3b679SAndreas Boehler        $warnings = $obj->validate();
168*a1a3b679SAndreas Boehler        $messages = array();
169*a1a3b679SAndreas Boehler        foreach($warnings as $warning) {
170*a1a3b679SAndreas Boehler            $messages[] = $warning['message'];
171*a1a3b679SAndreas Boehler        }
172*a1a3b679SAndreas Boehler
173*a1a3b679SAndreas Boehler        $this->assertEquals(array(
174*a1a3b679SAndreas Boehler            "DUE must occur after DTSTART",
175*a1a3b679SAndreas Boehler        ), $messages);
176*a1a3b679SAndreas Boehler
177*a1a3b679SAndreas Boehler    }
178*a1a3b679SAndreas Boehler
179*a1a3b679SAndreas Boehler}
180*a1a3b679SAndreas Boehler
181