Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1819806
VAlarmTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
6 KB
Subscribers
None
VAlarmTest.php
View Options
<?php
namespace
Sabre\VObject\Component
;
use
Sabre\VObject\Component
;
use
DateTime
;
use
Sabre\VObject\Reader
;
class
VAlarmTest
extends
\PHPUnit_Framework_TestCase
{
/**
* @dataProvider timeRangeTestData
*/
public
function
testInTimeRange
(
VAlarm
$valarm
,
$start
,
$end
,
$outcome
)
{
$this
->
assertEquals
(
$outcome
,
$valarm
->
isInTimeRange
(
$start
,
$end
));
}
public
function
timeRangeTestData
()
{
$tests
=
array
();
$calendar
=
new
VCalendar
();
// Hard date and time
$valarm1
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm1
->
add
(
$calendar
->
createProperty
(
'TRIGGER'
,
'20120312T130000Z'
,
array
(
'VALUE'
=>
'DATE-TIME'
))
);
$tests
[]
=
array
(
$valarm1
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-04-01 01:00:00'
),
true
);
$tests
[]
=
array
(
$valarm1
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-03-10 01:00:00'
),
false
);
// Relation to start time of event
$valarm2
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm2
->
add
(
$calendar
->
createProperty
(
'TRIGGER'
,
'-P1D'
,
array
(
'VALUE'
=>
'DURATION'
))
);
$vevent2
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent2
->
DTSTART
=
'20120313T130000Z'
;
$vevent2
->
add
(
$valarm2
);
$tests
[]
=
array
(
$valarm2
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-04-01 01:00:00'
),
true
);
$tests
[]
=
array
(
$valarm2
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-03-10 01:00:00'
),
false
);
// Relation to end time of event
$valarm3
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm3
->
add
(
$calendar
->
createProperty
(
'TRIGGER'
,
'-P1D'
,
array
(
'VALUE'
=>
'DURATION'
,
'RELATED'
=>
'END'
))
);
$vevent3
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent3
->
DTSTART
=
'20120301T130000Z'
;
$vevent3
->
DTEND
=
'20120401T130000Z'
;
$vevent3
->
add
(
$valarm3
);
$tests
[]
=
array
(
$valarm3
,
new
DateTime
(
'2012-02-25 01:00:00'
),
new
DateTime
(
'2012-03-05 01:00:00'
),
false
);
$tests
[]
=
array
(
$valarm3
,
new
DateTime
(
'2012-03-25 01:00:00'
),
new
DateTime
(
'2012-04-05 01:00:00'
),
true
);
// Relation to end time of todo
$valarm4
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm4
->
TRIGGER
=
'-P1D'
;
$valarm4
->
TRIGGER
[
'VALUE'
]
=
'DURATION'
;
$valarm4
->
TRIGGER
[
'RELATED'
]=
'END'
;
$vtodo4
=
$calendar
->
createComponent
(
'VTODO'
);
$vtodo4
->
DTSTART
=
'20120301T130000Z'
;
$vtodo4
->
DUE
=
'20120401T130000Z'
;
$vtodo4
->
add
(
$valarm4
);
$tests
[]
=
array
(
$valarm4
,
new
DateTime
(
'2012-02-25 01:00:00'
),
new
DateTime
(
'2012-03-05 01:00:00'
),
false
);
$tests
[]
=
array
(
$valarm4
,
new
DateTime
(
'2012-03-25 01:00:00'
),
new
DateTime
(
'2012-04-05 01:00:00'
),
true
);
// Relation to start time of event + repeat
$valarm5
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm5
->
TRIGGER
=
'-P1D'
;
$valarm5
->
TRIGGER
[
'VALUE'
]
=
'DURATION'
;
$valarm5
->
REPEAT
=
10
;
$valarm5
->
DURATION
=
'P1D'
;
$vevent5
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent5
->
DTSTART
=
'20120301T130000Z'
;
$vevent5
->
add
(
$valarm5
);
$tests
[]
=
array
(
$valarm5
,
new
DateTime
(
'2012-03-09 01:00:00'
),
new
DateTime
(
'2012-03-10 01:00:00'
),
true
);
// Relation to start time of event + duration, but no repeat
$valarm6
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm6
->
TRIGGER
=
'-P1D'
;
$valarm6
->
TRIGGER
[
'VALUE'
]
=
'DURATION'
;
$valarm6
->
DURATION
=
'P1D'
;
$vevent6
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent6
->
DTSTART
=
'20120313T130000Z'
;
$vevent6
->
add
(
$valarm6
);
$tests
[]
=
array
(
$valarm6
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-04-01 01:00:00'
),
true
);
$tests
[]
=
array
(
$valarm6
,
new
DateTime
(
'2012-03-01 01:00:00'
),
new
DateTime
(
'2012-03-10 01:00:00'
),
false
);
// Relation to end time of event (DURATION instead of DTEND)
$valarm7
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm7
->
TRIGGER
=
'-P1D'
;
$valarm7
->
TRIGGER
[
'VALUE'
]
=
'DURATION'
;
$valarm7
->
TRIGGER
[
'RELATED'
]=
'END'
;
$vevent7
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent7
->
DTSTART
=
'20120301T130000Z'
;
$vevent7
->
DURATION
=
'P30D'
;
$vevent7
->
add
(
$valarm7
);
$tests
[]
=
array
(
$valarm7
,
new
DateTime
(
'2012-02-25 01:00:00'
),
new
DateTime
(
'2012-03-05 01:00:00'
),
false
);
$tests
[]
=
array
(
$valarm7
,
new
DateTime
(
'2012-03-25 01:00:00'
),
new
DateTime
(
'2012-04-05 01:00:00'
),
true
);
// Relation to end time of event (No DTEND or DURATION)
$valarm7
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm7
->
TRIGGER
=
'-P1D'
;
$valarm7
->
TRIGGER
[
'VALUE'
]
=
'DURATION'
;
$valarm7
->
TRIGGER
[
'RELATED'
]=
'END'
;
$vevent7
=
$calendar
->
createComponent
(
'VEVENT'
);
$vevent7
->
DTSTART
=
'20120301T130000Z'
;
$vevent7
->
add
(
$valarm7
);
$tests
[]
=
array
(
$valarm7
,
new
DateTime
(
'2012-02-25 01:00:00'
),
new
DateTime
(
'2012-03-05 01:00:00'
),
true
);
$tests
[]
=
array
(
$valarm7
,
new
DateTime
(
'2012-03-25 01:00:00'
),
new
DateTime
(
'2012-04-05 01:00:00'
),
false
);
return
$tests
;
}
/**
* @expectedException LogicException
*/
public
function
testInTimeRangeInvalidComponent
()
{
$calendar
=
new
VCalendar
();
$valarm
=
$calendar
->
createComponent
(
'VALARM'
);
$valarm
->
TRIGGER
=
'-P1D'
;
$valarm
->
TRIGGER
[
'RELATED'
]
=
'END'
;
$vjournal
=
$calendar
->
createComponent
(
'VJOURNAL'
);
$vjournal
->
add
(
$valarm
);
$valarm
->
isInTimeRange
(
new
DateTime
(
'2012-02-25 01:00:00'
),
new
DateTime
(
'2012-03-05 01:00:00'
));
}
/**
* This bug was found and reported on the mailing list.
*/
public
function
testInTimeRangeBuggy
()
{
$input
=
<<<BLA
BEGIN:VCALENDAR
BEGIN:VTODO
DTSTAMP:20121003T064931Z
UID:b848cb9a7bb16e464a06c222ca1f8102@examle.com
STATUS:NEEDS-ACTION
DUE:20121005T000000Z
SUMMARY:Task 1
CATEGORIES:AlarmCategory
BEGIN:VALARM
TRIGGER:-PT10M
ACTION:DISPLAY
DESCRIPTION:Task 1
END:VALARM
END:VTODO
END:VCALENDAR
BLA;
$vobj
=
Reader
::
read
(
$input
);
$this
->
assertTrue
(
$vobj
->
VTODO
->
VALARM
->
isInTimeRange
(
new
\DateTime
(
'2012-10-01 00:00:00'
),
new
\DateTime
(
'2012-11-01 00:00:00'
)));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Dec 21, 1:29 PM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
916539
Default Alt Text
VAlarmTest.php (6 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment