xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Issue172Test.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV;
4*a1a3b679SAndreas Boehleruse Sabre\VObject;
5*a1a3b679SAndreas Boehleruse Sabre\DAV;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehlerclass Issue172Test extends \PHPUnit_Framework_TestCase {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler    // DateTimeZone() native name: America/Los_Angeles (GMT-8 in January)
10*a1a3b679SAndreas Boehler    function testBuiltInTimezoneName() {
11*a1a3b679SAndreas Boehler        $input = <<<HI
12*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
13*a1a3b679SAndreas BoehlerVERSION:2.0
14*a1a3b679SAndreas BoehlerBEGIN:VEVENT
15*a1a3b679SAndreas BoehlerDTSTART;TZID=America/Los_Angeles:20120118T204500
16*a1a3b679SAndreas BoehlerDTEND;TZID=America/Los_Angeles:20120118T214500
17*a1a3b679SAndreas BoehlerEND:VEVENT
18*a1a3b679SAndreas BoehlerEND:VCALENDAR
19*a1a3b679SAndreas BoehlerHI;
20*a1a3b679SAndreas Boehler        $validator = new CalendarQueryValidator();
21*a1a3b679SAndreas Boehler        $filters = array(
22*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
23*a1a3b679SAndreas Boehler            'comp-filters' => array(
24*a1a3b679SAndreas Boehler                array(
25*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
26*a1a3b679SAndreas Boehler                    'comp-filters' => array(),
27*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
28*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
29*a1a3b679SAndreas Boehler                    'time-range' => array(
30*a1a3b679SAndreas Boehler                        'start' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'),
31*a1a3b679SAndreas Boehler                        'end'   => new \DateTime('2012-01-18 21:00:00 GMT-08:00'),
32*a1a3b679SAndreas Boehler                    ),
33*a1a3b679SAndreas Boehler                ),
34*a1a3b679SAndreas Boehler            ),
35*a1a3b679SAndreas Boehler            'prop-filters' => array(),
36*a1a3b679SAndreas Boehler        );
37*a1a3b679SAndreas Boehler        $input = VObject\Reader::read($input);
38*a1a3b679SAndreas Boehler        $this->assertTrue($validator->validate($input,$filters));
39*a1a3b679SAndreas Boehler    }
40*a1a3b679SAndreas Boehler
41*a1a3b679SAndreas Boehler    // Pacific Standard Time, translates to America/Los_Angeles (GMT-8 in January)
42*a1a3b679SAndreas Boehler    function testOutlookTimezoneName() {
43*a1a3b679SAndreas Boehler        $input = <<<HI
44*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
45*a1a3b679SAndreas BoehlerVERSION:2.0
46*a1a3b679SAndreas BoehlerBEGIN:VTIMEZONE
47*a1a3b679SAndreas BoehlerTZID:Pacific Standard Time
48*a1a3b679SAndreas BoehlerBEGIN:STANDARD
49*a1a3b679SAndreas BoehlerDTSTART:16010101T030000
50*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0200
51*a1a3b679SAndreas BoehlerTZOFFSETTO:+0100
52*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
53*a1a3b679SAndreas BoehlerEND:STANDARD
54*a1a3b679SAndreas BoehlerBEGIN:DAYLIGHT
55*a1a3b679SAndreas BoehlerDTSTART:16010101T020000
56*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0100
57*a1a3b679SAndreas BoehlerTZOFFSETTO:+0200
58*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
59*a1a3b679SAndreas BoehlerEND:DAYLIGHT
60*a1a3b679SAndreas BoehlerEND:VTIMEZONE
61*a1a3b679SAndreas BoehlerBEGIN:VEVENT
62*a1a3b679SAndreas BoehlerDTSTART;TZID=Pacific Standard Time:20120113T100000
63*a1a3b679SAndreas BoehlerDTEND;TZID=Pacific Standard Time:20120113T110000
64*a1a3b679SAndreas BoehlerEND:VEVENT
65*a1a3b679SAndreas BoehlerEND:VCALENDAR
66*a1a3b679SAndreas BoehlerHI;
67*a1a3b679SAndreas Boehler        $validator = new CalendarQueryValidator();
68*a1a3b679SAndreas Boehler        $filters = array(
69*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
70*a1a3b679SAndreas Boehler            'comp-filters' => array(
71*a1a3b679SAndreas Boehler                array(
72*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
73*a1a3b679SAndreas Boehler                    'comp-filters' => array(),
74*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
75*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
76*a1a3b679SAndreas Boehler                    'time-range' => array(
77*a1a3b679SAndreas Boehler                        'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'),
78*a1a3b679SAndreas Boehler                        'end'   => new \DateTime('2012-01-13 10:30:00 GMT-08:00'),
79*a1a3b679SAndreas Boehler                    ),
80*a1a3b679SAndreas Boehler                ),
81*a1a3b679SAndreas Boehler            ),
82*a1a3b679SAndreas Boehler            'prop-filters' => array(),
83*a1a3b679SAndreas Boehler        );
84*a1a3b679SAndreas Boehler        $input = VObject\Reader::read($input);
85*a1a3b679SAndreas Boehler        $this->assertTrue($validator->validate($input,$filters));
86*a1a3b679SAndreas Boehler    }
87*a1a3b679SAndreas Boehler
88*a1a3b679SAndreas Boehler    // X-LIC-LOCATION, translates to America/Los_Angeles (GMT-8 in January)
89*a1a3b679SAndreas Boehler    function testLibICalLocationName() {
90*a1a3b679SAndreas Boehler        $input = <<<HI
91*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
92*a1a3b679SAndreas BoehlerVERSION:2.0
93*a1a3b679SAndreas BoehlerBEGIN:VTIMEZONE
94*a1a3b679SAndreas BoehlerTZID:My own timezone name
95*a1a3b679SAndreas BoehlerX-LIC-LOCATION:America/Los_Angeles
96*a1a3b679SAndreas BoehlerBEGIN:STANDARD
97*a1a3b679SAndreas BoehlerDTSTART:16010101T030000
98*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0200
99*a1a3b679SAndreas BoehlerTZOFFSETTO:+0100
100*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
101*a1a3b679SAndreas BoehlerEND:STANDARD
102*a1a3b679SAndreas BoehlerBEGIN:DAYLIGHT
103*a1a3b679SAndreas BoehlerDTSTART:16010101T020000
104*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0100
105*a1a3b679SAndreas BoehlerTZOFFSETTO:+0200
106*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
107*a1a3b679SAndreas BoehlerEND:DAYLIGHT
108*a1a3b679SAndreas BoehlerEND:VTIMEZONE
109*a1a3b679SAndreas BoehlerBEGIN:VEVENT
110*a1a3b679SAndreas BoehlerDTSTART;TZID=My own timezone name:20120113T100000
111*a1a3b679SAndreas BoehlerDTEND;TZID=My own timezone name:20120113T110000
112*a1a3b679SAndreas BoehlerEND:VEVENT
113*a1a3b679SAndreas BoehlerEND:VCALENDAR
114*a1a3b679SAndreas BoehlerHI;
115*a1a3b679SAndreas Boehler        $validator = new CalendarQueryValidator();
116*a1a3b679SAndreas Boehler        $filters = array(
117*a1a3b679SAndreas Boehler            'name' => 'VCALENDAR',
118*a1a3b679SAndreas Boehler            'comp-filters' => array(
119*a1a3b679SAndreas Boehler                array(
120*a1a3b679SAndreas Boehler                    'name' => 'VEVENT',
121*a1a3b679SAndreas Boehler                    'comp-filters' => array(),
122*a1a3b679SAndreas Boehler                    'prop-filters' => array(),
123*a1a3b679SAndreas Boehler                    'is-not-defined' => false,
124*a1a3b679SAndreas Boehler                    'time-range' => array(
125*a1a3b679SAndreas Boehler                        'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'),
126*a1a3b679SAndreas Boehler                        'end'   => new \DateTime('2012-01-13 10:30:00 GMT-08:00'),
127*a1a3b679SAndreas Boehler                    ),
128*a1a3b679SAndreas Boehler                ),
129*a1a3b679SAndreas Boehler            ),
130*a1a3b679SAndreas Boehler            'prop-filters' => array(),
131*a1a3b679SAndreas Boehler        );
132*a1a3b679SAndreas Boehler        $input = VObject\Reader::read($input);
133*a1a3b679SAndreas Boehler        $this->assertTrue($validator->validate($input,$filters));
134*a1a3b679SAndreas Boehler    }
135*a1a3b679SAndreas Boehler}
136