1<?php
2
3namespace Sabre\VObject\Component;
4
5use Sabre\VObject\Component;
6use Sabre\VObject\Reader;
7
8class VJournalTest extends \PHPUnit_Framework_TestCase {
9
10    /**
11     * @dataProvider timeRangeTestData
12     */
13    function testInTimeRange(VJournal $vtodo, $start, $end, $outcome) {
14
15        $this->assertEquals($outcome, $vtodo->isInTimeRange($start, $end));
16
17    }
18
19    function testValidate() {
20
21        $input = <<<HI
22BEGIN:VCALENDAR
23VERSION:2.0
24PRODID:YoYo
25BEGIN:VJOURNAL
26UID:12345678
27DTSTAMP:20140402T174100Z
28END:VJOURNAL
29END:VCALENDAR
30HI;
31
32        $obj = Reader::read($input);
33
34        $warnings = $obj->validate();
35        $messages = [];
36        foreach ($warnings as $warning) {
37            $messages[] = $warning['message'];
38        }
39
40        $this->assertEquals([], $messages);
41
42    }
43
44    function testValidateBroken() {
45
46        $input = <<<HI
47BEGIN:VCALENDAR
48VERSION:2.0
49PRODID:YoYo
50BEGIN:VJOURNAL
51UID:12345678
52DTSTAMP:20140402T174100Z
53URL:http://example.org/
54URL:http://example.com/
55END:VJOURNAL
56END:VCALENDAR
57HI;
58
59        $obj = Reader::read($input);
60
61        $warnings = $obj->validate();
62        $messages = [];
63        foreach ($warnings as $warning) {
64            $messages[] = $warning['message'];
65        }
66
67        $this->assertEquals(
68            ["URL MUST NOT appear more than once in a VJOURNAL component"],
69            $messages
70        );
71
72    }
73
74    function timeRangeTestData() {
75
76        $calendar = new VCalendar();
77
78        $tests = [];
79
80        $vjournal = $calendar->createComponent('VJOURNAL');
81        $vjournal->DTSTART = '20111223T120000Z';
82        $tests[] = [$vjournal, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
83        $tests[] = [$vjournal, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
84
85        $vjournal2 = $calendar->createComponent('VJOURNAL');
86        $vjournal2->DTSTART = '20111223';
87        $vjournal2->DTSTART['VALUE'] = 'DATE';
88        $tests[] = [$vjournal2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
89        $tests[] = [$vjournal2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
90
91        $vjournal3 = $calendar->createComponent('VJOURNAL');
92        $tests[] = [$vjournal3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), false];
93        $tests[] = [$vjournal3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
94
95        return $tests;
96    }
97
98
99
100}
101