xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/JCalTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab) !
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass JCalTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    function testToJCal() {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler        $cal = new Component\VCalendar();
10*a1a3b679SAndreas Boehler
11*a1a3b679SAndreas Boehler        $event = $cal->add('VEVENT', array(
12*a1a3b679SAndreas Boehler            "UID" => "foo",
13*a1a3b679SAndreas Boehler            "DTSTART" => new \DateTime("2013-05-26 18:10:00Z"),
14*a1a3b679SAndreas Boehler            "DURATION" => "P1D",
15*a1a3b679SAndreas Boehler            "CATEGORIES" => array('home', 'testing'),
16*a1a3b679SAndreas Boehler            "CREATED" => new \DateTime("2013-05-26 18:10:00Z"),
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler            "ATTENDEE" => "mailto:armin@example.org",
19*a1a3b679SAndreas Boehler            "GEO" => array(51.96668, 7.61876),
20*a1a3b679SAndreas Boehler            "SEQUENCE" => 5,
21*a1a3b679SAndreas Boehler            "FREEBUSY" => array("20130526T210213Z/PT1H", "20130626T120000Z/20130626T130000Z"),
22*a1a3b679SAndreas Boehler            "URL" => "http://example.org/",
23*a1a3b679SAndreas Boehler            "TZOFFSETFROM" => "+05:00",
24*a1a3b679SAndreas Boehler            "RRULE" => array('FREQ' => 'WEEKLY', 'BYDAY' => array('MO','TU')),
25*a1a3b679SAndreas Boehler        ));
26*a1a3b679SAndreas Boehler
27*a1a3b679SAndreas Boehler        // Modifying DTSTART to be a date-only.
28*a1a3b679SAndreas Boehler        $event->dtstart['VALUE'] = 'DATE';
29*a1a3b679SAndreas Boehler        $event->add("X-BOOL", true, array('VALUE' => 'BOOLEAN'));
30*a1a3b679SAndreas Boehler        $event->add("X-TIME", "08:00:00", array('VALUE' => 'TIME'));
31*a1a3b679SAndreas Boehler        $event->add("ATTACH", "attachment", array('VALUE' => 'BINARY'));
32*a1a3b679SAndreas Boehler        $event->add("ATTENDEE", "mailto:dominik@example.org", array("CN" => "Dominik", "PARTSTAT" => "DECLINED"));
33*a1a3b679SAndreas Boehler
34*a1a3b679SAndreas Boehler        $event->add('REQUEST-STATUS', array("2.0", "Success"));
35*a1a3b679SAndreas Boehler        $event->add('REQUEST-STATUS', array("3.7", "Invalid Calendar User", "ATTENDEE:mailto:jsmith@example.org"));
36*a1a3b679SAndreas Boehler
37*a1a3b679SAndreas Boehler        $event->add('DTEND', '20150108T133000');
38*a1a3b679SAndreas Boehler
39*a1a3b679SAndreas Boehler        $expected = array(
40*a1a3b679SAndreas Boehler            "vcalendar",
41*a1a3b679SAndreas Boehler            array(
42*a1a3b679SAndreas Boehler                array(
43*a1a3b679SAndreas Boehler                    "version",
44*a1a3b679SAndreas Boehler                    new \StdClass(),
45*a1a3b679SAndreas Boehler                    "text",
46*a1a3b679SAndreas Boehler                    "2.0"
47*a1a3b679SAndreas Boehler                ),
48*a1a3b679SAndreas Boehler                array(
49*a1a3b679SAndreas Boehler                    "prodid",
50*a1a3b679SAndreas Boehler                    new \StdClass(),
51*a1a3b679SAndreas Boehler                    "text",
52*a1a3b679SAndreas Boehler                    "-//Sabre//Sabre VObject " . Version::VERSION . "//EN",
53*a1a3b679SAndreas Boehler                ),
54*a1a3b679SAndreas Boehler                array(
55*a1a3b679SAndreas Boehler                    "calscale",
56*a1a3b679SAndreas Boehler                    new \StdClass(),
57*a1a3b679SAndreas Boehler                    "text",
58*a1a3b679SAndreas Boehler                    "GREGORIAN"
59*a1a3b679SAndreas Boehler                ),
60*a1a3b679SAndreas Boehler            ),
61*a1a3b679SAndreas Boehler            array(
62*a1a3b679SAndreas Boehler                array("vevent",
63*a1a3b679SAndreas Boehler                    array(
64*a1a3b679SAndreas Boehler                        array(
65*a1a3b679SAndreas Boehler                            "uid", new \StdClass(), "text", "foo",
66*a1a3b679SAndreas Boehler                        ),
67*a1a3b679SAndreas Boehler                        array(
68*a1a3b679SAndreas Boehler                            "dtstart", new \StdClass(), "date", "2013-05-26",
69*a1a3b679SAndreas Boehler                        ),
70*a1a3b679SAndreas Boehler                        array(
71*a1a3b679SAndreas Boehler                            "duration", new \StdClass(), "duration", "P1D",
72*a1a3b679SAndreas Boehler                        ),
73*a1a3b679SAndreas Boehler                        array(
74*a1a3b679SAndreas Boehler                            "categories", new \StdClass(), "text", "home", "testing",
75*a1a3b679SAndreas Boehler                        ),
76*a1a3b679SAndreas Boehler                        array(
77*a1a3b679SAndreas Boehler                            "created", new \StdClass(), "date-time", "2013-05-26T18:10:00Z",
78*a1a3b679SAndreas Boehler                        ),
79*a1a3b679SAndreas Boehler
80*a1a3b679SAndreas Boehler                        array(
81*a1a3b679SAndreas Boehler                            "attendee", new \StdClass(), "cal-address", "mailto:armin@example.org",
82*a1a3b679SAndreas Boehler                        ),
83*a1a3b679SAndreas Boehler                        array(
84*a1a3b679SAndreas Boehler                            "geo", new \StdClass(), "float", array(51.96668, 7.61876),
85*a1a3b679SAndreas Boehler                        ),
86*a1a3b679SAndreas Boehler                        array(
87*a1a3b679SAndreas Boehler                            "sequence", new \StdClass(), "integer", 5
88*a1a3b679SAndreas Boehler                        ),
89*a1a3b679SAndreas Boehler                        array(
90*a1a3b679SAndreas Boehler                            "freebusy", new \StdClass(), "period",  array("2013-05-26T21:02:13", "PT1H"), array("2013-06-26T12:00:00", "2013-06-26T13:00:00"),
91*a1a3b679SAndreas Boehler                        ),
92*a1a3b679SAndreas Boehler                        array(
93*a1a3b679SAndreas Boehler                            "url", new \StdClass(), "uri", "http://example.org/",
94*a1a3b679SAndreas Boehler                        ),
95*a1a3b679SAndreas Boehler                        array(
96*a1a3b679SAndreas Boehler                            "tzoffsetfrom", new \StdClass(), "utc-offset", "+05:00",
97*a1a3b679SAndreas Boehler                        ),
98*a1a3b679SAndreas Boehler                        array(
99*a1a3b679SAndreas Boehler                            "rrule", new \StdClass(), "recur", array(
100*a1a3b679SAndreas Boehler                                'freq' => 'WEEKLY',
101*a1a3b679SAndreas Boehler                                'byday' => array('MO', 'TU'),
102*a1a3b679SAndreas Boehler                            ),
103*a1a3b679SAndreas Boehler                        ),
104*a1a3b679SAndreas Boehler                        array(
105*a1a3b679SAndreas Boehler                            "x-bool", new \StdClass(), "boolean", true
106*a1a3b679SAndreas Boehler                        ),
107*a1a3b679SAndreas Boehler                        array(
108*a1a3b679SAndreas Boehler                            "x-time", new \StdClass(), "time", "08:00:00",
109*a1a3b679SAndreas Boehler                        ),
110*a1a3b679SAndreas Boehler                        array(
111*a1a3b679SAndreas Boehler                            "attach", new \StdClass(), "binary", base64_encode('attachment')
112*a1a3b679SAndreas Boehler                        ),
113*a1a3b679SAndreas Boehler                        array(
114*a1a3b679SAndreas Boehler                            "attendee",
115*a1a3b679SAndreas Boehler                            (object)array(
116*a1a3b679SAndreas Boehler                                "cn" => "Dominik",
117*a1a3b679SAndreas Boehler                                "partstat" => "DECLINED",
118*a1a3b679SAndreas Boehler                            ),
119*a1a3b679SAndreas Boehler                            "cal-address",
120*a1a3b679SAndreas Boehler                            "mailto:dominik@example.org"
121*a1a3b679SAndreas Boehler                        ),
122*a1a3b679SAndreas Boehler                        array(
123*a1a3b679SAndreas Boehler                            "request-status",
124*a1a3b679SAndreas Boehler                            new \StdClass(),
125*a1a3b679SAndreas Boehler                            "text",
126*a1a3b679SAndreas Boehler                            array("2.0", "Success"),
127*a1a3b679SAndreas Boehler                        ),
128*a1a3b679SAndreas Boehler                        array(
129*a1a3b679SAndreas Boehler                            "request-status",
130*a1a3b679SAndreas Boehler                            new \StdClass(),
131*a1a3b679SAndreas Boehler                            "text",
132*a1a3b679SAndreas Boehler                            array("3.7", "Invalid Calendar User", "ATTENDEE:mailto:jsmith@example.org"),
133*a1a3b679SAndreas Boehler                        ),
134*a1a3b679SAndreas Boehler                        array(
135*a1a3b679SAndreas Boehler                            'dtend',
136*a1a3b679SAndreas Boehler                            new \StdClass(),
137*a1a3b679SAndreas Boehler                            "date-time",
138*a1a3b679SAndreas Boehler                            "2015-01-08T13:30:00",
139*a1a3b679SAndreas Boehler                        ),
140*a1a3b679SAndreas Boehler                    ),
141*a1a3b679SAndreas Boehler                    array(),
142*a1a3b679SAndreas Boehler                )
143*a1a3b679SAndreas Boehler            ),
144*a1a3b679SAndreas Boehler        );
145*a1a3b679SAndreas Boehler
146*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $cal->jsonSerialize());
147*a1a3b679SAndreas Boehler
148*a1a3b679SAndreas Boehler    }
149*a1a3b679SAndreas Boehler
150*a1a3b679SAndreas Boehler}
151