aboutsummaryrefslogblamecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php
blob: 166de1daba45f08504cabd0ea44ef4c1f99072d9 (plain) (tree)
1
2
3
4
5
6
7
8
9

     

                        

                               


                        



                                                      
                                       





                                                                        

     

                                       
                                       
                    
                                  

                               


                                         
                                              
                                         

                  
                                 
                                      
                                 




                                                  

     

                                                









                                                                  
          


                                                                     
     
 

                                                    

                                                            
                         




                        


                                      


                                                                                                                  


                                     




                                                                                                     
     

 



                                                      

                
                          
                                               
                                

              

                                               
                                                                          
                                

              




                                                                                  
 

                                               
     
 

                                                   



                              
                                  
                                          
                                              

                      
                                  
                                          
                                             




                        
                                  
                                          

                                                    

                  
     
 

                                                              
                             
                              
                        


                                          

                                                                                                                      
                             
                        


                                         
                                                                                                         
                  
                                    
                        


                                          

                                                                                                                         
         
     
 

                                                                                
     
 






                                                                                
 
<?php

declare(strict_types=1);

namespace Sabre\CalDAV\Backend;

use
    Sabre\DAV\PropPatch;

class AbstractTest extends \PHPUnit\Framework\TestCase
{
    public function testUpdateCalendar()
    {
        $abstract = new AbstractMock();
        $propPatch = new PropPatch(['{DAV:}displayname' => 'anything']);

        $abstract->updateCalendar('randomid', $propPatch);
        $result = $propPatch->commit();

        $this->assertFalse($result);
    }

    public function testCalendarQuery()
    {
        $abstract = new AbstractMock();
        $filters = [
            'name' => 'VCALENDAR',
            'comp-filters' => [
                [
                    'name' => 'VEVENT',
                    'comp-filters' => [],
                    'prop-filters' => [],
                    'is-not-defined' => false,
                    'time-range' => null,
                ],
            ],
            'prop-filters' => [],
            'is-not-defined' => false,
            'time-range' => null,
        ];

        $this->assertEquals([
            'event1.ics',
        ], $abstract->calendarQuery(1, $filters));
    }

    public function testGetCalendarObjectByUID()
    {
        $abstract = new AbstractMock();
        $this->assertNull(
            $abstract->getCalendarObjectByUID('principal1', 'zim')
        );
        $this->assertEquals(
            'cal1/event1.ics',
            $abstract->getCalendarObjectByUID('principal1', 'foo')
        );
        $this->assertNull(
            $abstract->getCalendarObjectByUID('principal3', 'foo')
        );
        $this->assertNull(
            $abstract->getCalendarObjectByUID('principal1', 'shared')
        );
    }

    public function testGetMultipleCalendarObjects()
    {
        $abstract = new AbstractMock();
        $result = $abstract->getMultipleCalendarObjects(1, [
            'event1.ics',
            'task1.ics',
        ]);

        $expected = [
            [
                'id' => 1,
                'calendarid' => 1,
                'uri' => 'event1.ics',
                'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
            ],
            [
                'id' => 2,
                'calendarid' => 1,
                'uri' => 'task1.ics',
                'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
            ],
        ];

        $this->assertEquals($expected, $result);
    }
}

class AbstractMock extends AbstractBackend
{
    public function getCalendarsForUser($principalUri)
    {
        return [
            [
                'id' => 1,
                'principaluri' => 'principal1',
                'uri' => 'cal1',
            ],
            [
                'id' => 2,
                'principaluri' => 'principal1',
                '{http://sabredav.org/ns}owner-principal' => 'principal2',
                'uri' => 'cal1',
            ],
        ];
    }

    public function createCalendar($principalUri, $calendarUri, array $properties)
    {
    }

    public function deleteCalendar($calendarId)
    {
    }

    public function getCalendarObjects($calendarId)
    {
        switch ($calendarId) {
            case 1:
                return [
                    [
                        'id' => 1,
                        'calendarid' => 1,
                        'uri' => 'event1.ics',
                    ],
                    [
                        'id' => 2,
                        'calendarid' => 1,
                        'uri' => 'task1.ics',
                    ],
                ];
            case 2:
                return [
                    [
                        'id' => 3,
                        'calendarid' => 2,
                        'uri' => 'shared-event.ics',
                    ],
                ];
        }
    }

    public function getCalendarObject($calendarId, $objectUri)
    {
        switch ($objectUri) {
            case 'event1.ics':
                return [
                    'id' => 1,
                    'calendarid' => 1,
                    'uri' => 'event1.ics',
                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
                ];
            case 'task1.ics':
                return [
                    'id' => 2,
                    'calendarid' => 1,
                    'uri' => 'task1.ics',
                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
                ];
            case 'shared-event.ics':
                return [
                    'id' => 3,
                    'calendarid' => 2,
                    'uri' => 'event1.ics',
                    'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:shared\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
                ];
        }
    }

    public function createCalendarObject($calendarId, $objectUri, $calendarData)
    {
    }

    public function updateCalendarObject($calendarId, $objectUri, $calendarData)
    {
    }

    public function deleteCalendarObject($calendarId, $objectUri)
    {
    }
}