1<?php
2
3namespace Sabre\VObject;
4
5use PHPUnit\Framework\TestCase;
6
7class DocumentTest extends TestCase
8{
9    public function testGetDocumentType()
10    {
11        $doc = new MockDocument();
12        $this->assertEquals(Document::UNKNOWN, $doc->getDocumentType());
13    }
14
15    public function testConstruct()
16    {
17        $doc = new MockDocument('VLIST');
18        $this->assertEquals('VLIST', $doc->name);
19    }
20
21    public function testCreateComponent()
22    {
23        $vcal = new Component\VCalendar([], false);
24
25        $event = $vcal->createComponent('VEVENT');
26
27        $this->assertInstanceOf('Sabre\VObject\Component\VEvent', $event);
28        $vcal->add($event);
29
30        $prop = $vcal->createProperty('X-PROP', '1234256', ['X-PARAM' => '3']);
31        $this->assertInstanceOf('Sabre\VObject\Property', $prop);
32
33        $event->add($prop);
34
35        unset(
36            $event->DTSTAMP,
37            $event->UID
38        );
39
40        $out = $vcal->serialize();
41        $this->assertEquals("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nX-PROP;X-PARAM=3:1234256\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", $out);
42    }
43
44    public function testCreate()
45    {
46        $vcal = new Component\VCalendar([], false);
47
48        $event = $vcal->create('VEVENT');
49        $this->assertInstanceOf('Sabre\VObject\Component\VEvent', $event);
50
51        $prop = $vcal->create('CALSCALE');
52        $this->assertInstanceOf('Sabre\VObject\Property\Text', $prop);
53    }
54
55    public function testGetClassNameForPropertyValue()
56    {
57        $vcal = new Component\VCalendar([], false);
58        $this->assertEquals('Sabre\\VObject\\Property\\Text', $vcal->getClassNameForPropertyValue('TEXT'));
59        $this->assertNull($vcal->getClassNameForPropertyValue('FOO'));
60    }
61
62    public function testDestroy()
63    {
64        $vcal = new Component\VCalendar([], false);
65        $event = $vcal->createComponent('VEVENT');
66
67        $this->assertInstanceOf('Sabre\VObject\Component\VEvent', $event);
68        $vcal->add($event);
69
70        $prop = $vcal->createProperty('X-PROP', '1234256', ['X-PARAM' => '3']);
71
72        $event->add($prop);
73
74        $this->assertEquals($event, $prop->parent);
75
76        $vcal->destroy();
77
78        $this->assertNull($prop->parent);
79    }
80}
81
82class MockDocument extends Document
83{
84}
85