diff options
Diffstat (limited to 'apps/dav/tests/unit/CalDAV/CachedSubscriptionImplTest.php')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/CachedSubscriptionImplTest.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/apps/dav/tests/unit/CalDAV/CachedSubscriptionImplTest.php b/apps/dav/tests/unit/CalDAV/CachedSubscriptionImplTest.php new file mode 100644 index 00000000000..935d8314f29 --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/CachedSubscriptionImplTest.php @@ -0,0 +1,80 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\DAV\Tests\unit\CalDAV; + +use OCA\DAV\CalDAV\CachedSubscription; +use OCA\DAV\CalDAV\CachedSubscriptionImpl; +use OCA\DAV\CalDAV\CalDavBackend; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class CachedSubscriptionImplTest extends TestCase { + private CachedSubscription&MockObject $cachedSubscription; + private array $cachedSubscriptionInfo; + private CalDavBackend&MockObject $backend; + private CachedSubscriptionImpl $cachedSubscriptionImpl; + + protected function setUp(): void { + parent::setUp(); + + $this->cachedSubscription = $this->createMock(CachedSubscription::class); + $this->cachedSubscriptionInfo = [ + 'id' => 'fancy_id_123', + '{DAV:}displayname' => 'user readable name 123', + '{http://apple.com/ns/ical/}calendar-color' => '#AABBCC', + 'uri' => '/this/is/a/uri', + 'source' => 'https://test.localhost/calendar1', + ]; + $this->backend = $this->createMock(CalDavBackend::class); + + $this->cachedSubscriptionImpl = new CachedSubscriptionImpl( + $this->cachedSubscription, + $this->cachedSubscriptionInfo, + $this->backend + ); + } + + public function testGetKey(): void { + $this->assertEquals($this->cachedSubscriptionImpl->getKey(), 'fancy_id_123'); + } + + public function testGetDisplayname(): void { + $this->assertEquals($this->cachedSubscriptionImpl->getDisplayName(), 'user readable name 123'); + } + + public function testGetDisplayColor(): void { + $this->assertEquals($this->cachedSubscriptionImpl->getDisplayColor(), '#AABBCC'); + } + + public function testGetSource(): void { + $this->assertEquals($this->cachedSubscriptionImpl->getSource(), 'https://test.localhost/calendar1'); + } + + public function testSearch(): void { + $this->backend->expects($this->once()) + ->method('search') + ->with($this->cachedSubscriptionInfo, 'abc', ['def'], ['ghi'], 42, 1337) + ->willReturn(['SEARCHRESULTS']); + + $result = $this->cachedSubscriptionImpl->search('abc', ['def'], ['ghi'], 42, 1337); + $this->assertEquals($result, ['SEARCHRESULTS']); + } + + public function testGetPermissionRead(): void { + $this->cachedSubscription->expects($this->once()) + ->method('getACL') + ->with() + ->willReturn([ + ['privilege' => '{DAV:}read'] + ]); + + $this->assertEquals(1, $this->cachedSubscriptionImpl->getPermissions()); + } +} |