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