diff vendor/sabre/vobject/tests/VObject/VCardConverterTest.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/VCardConverterTest.php	Sat Jan 13 09:06:10 2018 -0500
@@ -0,0 +1,531 @@
+<?php
+
+namespace Sabre\VObject;
+
+class VCardConverterTest extends TestCase {
+
+    function testConvert30to40() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+FN;CHARSET=UTF-8:Steve
+TEL;TYPE=PREF,HOME:+1 555 666 777
+ITEM1.TEL:+1 444 555 666
+ITEM1.X-ABLABEL:CustomLabel
+PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
+PHOTO;ENCODING=b;TYPE=GIF:Zm9v
+PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
+PHOTO;VALUE=URI:http://example.org/foo.png
+X-ABShowAs:COMPANY
+END:VCARD
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+FN:Steve
+TEL;PREF=1;TYPE=HOME:+1 555 666 777
+ITEM1.TEL:+1 444 555 666
+ITEM1.X-ABLABEL:CustomLabel
+PHOTO;TYPE=HOME:data:image/jpeg;base64,Zm9v
+PHOTO:data:image/gif;base64,Zm9v
+PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
+PHOTO:http://example.org/foo.png
+KIND:ORG
+END:VCARD
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testConvert40to40() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.0
+FN:Steve
+TEL;PREF=1;TYPE=HOME:+1 555 666 777
+PHOTO:data:image/jpeg;base64,Zm9v
+PHOTO:data:image/gif;base64,Zm9v
+PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
+PHOTO:http://example.org/foo.png
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+FN:Steve
+TEL;PREF=1;TYPE=HOME:+1 555 666 777
+PHOTO:data:image/jpeg;base64,Zm9v
+PHOTO:data:image/gif;base64,Zm9v
+PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
+PHOTO:http://example.org/foo.png
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testConvert21to40() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:2.1
+N:Family;Johnson
+FN:Johnson Family
+TEL;HOME;VOICE:555-12345-345
+ADR;HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0
+LABEL;HOME;ENCODING=QUOTED-PRINTABLE:100 Street Lane=0D=0ASaubel Beach,
+ ON H0H0H0
+REV:20110731T040251Z
+UID:12345678
+END:VCARD
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+N:Family;Johnson;;;
+FN:Johnson Family
+TEL;TYPE=HOME,VOICE:555-12345-345
+ADR;TYPE=HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0;
+REV:20110731T040251Z
+UID:12345678
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testConvert30to30() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+FN;CHARSET=UTF-8:Steve
+TEL;TYPE=PREF,HOME:+1 555 666 777
+PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
+PHOTO;ENCODING=b;TYPE=GIF:Zm9v
+PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
+PHOTO;VALUE=URI:http://example.org/foo.png
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+FN;CHARSET=UTF-8:Steve
+TEL;TYPE=PREF,HOME:+1 555 666 777
+PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
+PHOTO;ENCODING=b;TYPE=GIF:Zm9v
+PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
+PHOTO;VALUE=URI:http://example.org/foo.png
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testConvert40to30() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.0
+PRODID:foo
+FN:Steve
+TEL;PREF=1;TYPE=HOME:+1 555 666 777
+PHOTO:data:image/jpeg;base64,Zm9v
+PHOTO:data:image/gif,foo
+PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
+PHOTO:http://example.org/foo.png
+KIND:ORG
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:3.0
+FN:Steve
+TEL;TYPE=PREF,HOME:+1 555 666 777
+PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
+PHOTO;ENCODING=b;TYPE=GIF:Zm9v
+PHOTO;ENCODING=b;TYPE=PNG;X-PARAM=FOO:Zm9v
+PHOTO;VALUE=URI:http://example.org/foo.png
+X-ABSHOWAS:COMPANY
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testConvertGroupCard() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+X-ADDRESSBOOKSERVER-KIND:GROUP
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+KIND:GROUP
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+        $input = $output;
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:3.0
+X-ADDRESSBOOKSERVER-KIND:GROUP
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testBDAYConversion() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+BDAY:--04-16
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+        $input = $output;
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:3.0
+BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    function testUnknownSourceVCardVersion() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.2
+PRODID:foo
+FN;CHARSET=UTF-8:Steve
+TEL;TYPE=PREF,HOME:+1 555 666 777
+ITEM1.TEL:+1 444 555 666
+ITEM1.X-ABLABEL:CustomLabel
+PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
+PHOTO;ENCODING=b;TYPE=GIF:Zm9v
+PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
+PHOTO;VALUE=URI:http://example.org/foo.png
+X-ABShowAs:COMPANY
+END:VCARD
+
+IN;
+
+        $vcard = Reader::read($input);
+        $vcard->convert(Document::VCARD40);
+
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    function testUnknownTargetVCardVersion() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:3.0
+PRODID:foo
+END:VCARD
+
+IN;
+
+        $vcard = Reader::read($input);
+        $vcard->convert(Document::VCARD21);
+
+    }
+
+    function testConvertIndividualCard() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.0
+PRODID:foo
+KIND:INDIVIDUAL
+END:VCARD
+
+IN;
+
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:3.0
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+        $input = $output;
+        $output = <<<OUT
+BEGIN:VCARD
+VERSION:4.0
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testAnniversary() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.0
+ITEM1.ANNIVERSARY:20081210
+END:VCARD
+
+IN;
+
+        $output = <<<'OUT'
+BEGIN:VCARD
+VERSION:3.0
+ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
+ITEM1.X-ABLABEL:_$!<Anniversary>!$_
+ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+        // Swapping input and output
+        list(
+            $input,
+            $output
+        ) = array(
+            $output,
+            $input
+        );
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testMultipleAnniversaries() {
+
+        $input = <<<IN
+BEGIN:VCARD
+VERSION:4.0
+ITEM1.ANNIVERSARY:20081210
+ITEM2.ANNIVERSARY:20091210
+ITEM3.ANNIVERSARY:20101210
+END:VCARD
+
+IN;
+
+        $output = <<<'OUT'
+BEGIN:VCARD
+VERSION:3.0
+ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
+ITEM1.X-ABLABEL:_$!<Anniversary>!$_
+ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
+ITEM2.X-ABDATE;VALUE=DATE-AND-OR-TIME:20091210
+ITEM2.X-ABLABEL:_$!<Anniversary>!$_
+ITEM2.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20091210
+ITEM3.X-ABDATE;VALUE=DATE-AND-OR-TIME:20101210
+ITEM3.X-ABLABEL:_$!<Anniversary>!$_
+ITEM3.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20101210
+END:VCARD
+
+OUT;
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD30);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+        // Swapping input and output
+        list(
+            $input,
+            $output
+        ) = array(
+            $output,
+            $input
+        );
+
+        $vcard = Reader::read($input);
+        $vcard = $vcard->convert(Document::VCARD40);
+
+        $this->assertVObjEquals(
+            $output,
+            $vcard
+        );
+
+    }
+
+    function testNoLabel() {
+
+      $input = <<<VCF
+BEGIN:VCARD
+VERSION:3.0
+UID:foo
+N:Doe;John;;;
+FN:John Doe
+item1.X-ABDATE;type=pref:2008-12-11
+END:VCARD
+
+VCF;
+
+      $vcard = Reader::read($input);
+
+      $this->assertInstanceOf('Sabre\\VObject\\Component\\VCard', $vcard);
+      $vcard = $vcard->convert(Document::VCARD40);
+      $vcard = $vcard->serialize();
+
+      $converted = Reader::read($vcard);
+      $converted->validate();
+
+      $version = Version::VERSION;
+
+      $expected = <<<VCF
+BEGIN:VCARD
+VERSION:4.0
+PRODID:-//Sabre//Sabre VObject $version//EN
+UID:foo
+N:Doe;John;;;
+FN:John Doe
+ITEM1.X-ABDATE;PREF=1:2008-12-11
+END:VCARD
+
+VCF;
+
+      $this->assertEquals($expected, str_replace("\r","", $vcard));
+
+    }
+
+}