annotate vendor/sabre/vobject/tests/VObject/Component/VTodoTest.php @ 40:3ea4a836c377

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