Mercurial > hg > rc1
diff vendor/sabre/vobject/tests/VObject/Property/VCard/DateAndOrTimeTest.php @ 7:430dbd5346f7
vendor sabre as distributed
author | Charlie Root |
---|---|
date | Sat, 13 Jan 2018 09:06:10 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/sabre/vobject/tests/VObject/Property/VCard/DateAndOrTimeTest.php Sat Jan 13 09:06:10 2018 -0500 @@ -0,0 +1,233 @@ +<?php + +namespace Sabre\VObject\Property\VCard; + +use + Sabre\VObject, + Sabre\VObject\Reader; + +class DateAndOrTimeTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider dates + */ + function testGetJsonValue($input, $output) { + + $vcard = new VObject\Component\VCard(); + $prop = $vcard->createProperty('BDAY', $input); + + $this->assertEquals(array($output), $prop->getJsonValue()); + + } + + function dates() { + + return array( + array( + "19961022T140000", + "1996-10-22T14:00:00", + ), + array( + "--1022T1400", + "--10-22T14:00", + ), + array( + "---22T14", + "---22T14", + ), + array( + "19850412", + "1985-04-12", + ), + array( + "1985-04", + "1985-04", + ), + array( + "1985", + "1985", + ), + array( + "--0412", + "--04-12", + ), + array( + "T102200", + "T10:22:00", + ), + array( + "T1022", + "T10:22", + ), + array( + "T10", + "T10", + ), + array( + "T-2200", + "T-22:00", + ), + array( + "T102200Z", + "T10:22:00Z", + ), + array( + "T102200-0800", + "T10:22:00-0800", + ), + array( + "T--00", + "T--00", + ), + ); + + } + + public function testSetParts() { + + $vcard = new VObject\Component\VCard(); + + $prop = $vcard->createProperty('BDAY'); + $prop->setParts(array( + new \DateTime('2014-04-02 18:37:00') + )); + + $this->assertEquals('20140402T183700Z', $prop->getValue()); + + } + + /** + * @expectedException InvalidArgumentException + */ + public function testSetPartsTooMany() { + + $vcard = new VObject\Component\VCard(); + + $prop = $vcard->createProperty('BDAY'); + $prop->setParts(array( + 1, + 2 + )); + + } + + public function testSetPartsString() { + + $vcard = new VObject\Component\VCard(); + + $prop = $vcard->createProperty('BDAY'); + $prop->setParts(array( + "20140402T183700Z" + )); + + $this->assertEquals('20140402T183700Z', $prop->getValue()); + + } + + public function testSetValueDateTime() { + + $vcard = new VObject\Component\VCard(); + + $prop = $vcard->createProperty('BDAY'); + $prop->setValue( + new \DateTime('2014-04-02 18:37:00') + ); + + $this->assertEquals('20140402T183700Z', $prop->getValue()); + + } + + public function testSetDateTimeOffset() { + + $vcard = new VObject\Component\VCard(); + + $prop = $vcard->createProperty('BDAY'); + $prop->setValue( + new \DateTime('2014-04-02 18:37:00', new \DateTimeZone('America/Toronto')) + ); + + $this->assertEquals('20140402T183700-0400', $prop->getValue()); + + } + + public function testGetDateTime() { + + $datetime = new \DateTime('2014-04-02 18:37:00', new \DateTimeZone('America/Toronto')); + + $vcard = new VObject\Component\VCard(); + $prop = $vcard->createProperty('BDAY', $datetime); + + $dt = $prop->getDateTime(); + $this->assertEquals('2014-04-02T18:37:00-04:00', $dt->format('c'), "For some reason this one failed. Current default timezone is: " . date_default_timezone_get()); + + } + + public function testGetDateIncomplete() { + + $datetime = '--0407'; + + $vcard = new VObject\Component\VCard(); + $prop = $vcard->add('BDAY', $datetime); + + $dt = $prop->getDateTime(); + // Note: if the year changes between the last line and the next line of + // code, this test may fail. + // + // If that happens, head outside and have a drink. + $current = new \DateTime('now'); + $year = $current->format('Y'); + + $this->assertEquals($year . '0407', $dt->format('Ymd')); + + } + + public function testGetDateIncompleteFromVCard() { + + $vcard = <<<VCF +BEGIN:VCARD +VERSION:4.0 +BDAY:--0407 +END:VCARD +VCF; + $vcard = Reader::read($vcard); + $prop = $vcard->BDAY; + + $dt = $prop->getDateTime(); + // Note: if the year changes between the last line and the next line of + // code, this test may fail. + // + // If that happens, head outside and have a drink. + $current = new \DateTime('now'); + $year = $current->format('Y'); + + $this->assertEquals($year . '0407', $dt->format('Ymd')); + + } + + public function testValidate() { + + $datetime = '--0407'; + + $vcard = new VObject\Component\VCard(); + $prop = $vcard->add('BDAY', $datetime); + + $this->assertEquals(array(), $prop->validate()); + + } + + public function testValidateBroken() { + + $datetime = '123'; + + $vcard = new VObject\Component\VCard(); + $prop = $vcard->add('BDAY', $datetime); + + $this->assertEquals(array(array( + 'level' => 3, + 'message' => 'The supplied value (123) is not a correct DATE-AND-OR-TIME property', + 'node' => $prop, + )), $prop->validate()); + + } +} +