Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/tests/unit/Listener/ActivityUpdaterListenerTest.php')
-rw-r--r--apps/dav/tests/unit/Listener/ActivityUpdaterListenerTest.php104
1 files changed, 104 insertions, 0 deletions
diff --git a/apps/dav/tests/unit/Listener/ActivityUpdaterListenerTest.php b/apps/dav/tests/unit/Listener/ActivityUpdaterListenerTest.php
new file mode 100644
index 00000000000..8bdb85c13c7
--- /dev/null
+++ b/apps/dav/tests/unit/Listener/ActivityUpdaterListenerTest.php
@@ -0,0 +1,104 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright 2022 Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\DAV\Tests\Unit\Listener;
+
+use OCA\DAV\CalDAV\Activity\Backend as ActivityBackend;
+use OCA\DAV\CalDAV\Activity\Provider\Event;
+use OCA\DAV\DAV\Sharing\Plugin as SharingPlugin;
+use OCA\DAV\Events\CalendarDeletedEvent;
+use OCA\DAV\Events\CalendarObjectDeletedEvent;
+use OCA\DAV\Listener\ActivityUpdaterListener;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
+use Test\TestCase;
+
+class ActivityUpdaterListenerTest extends TestCase {
+
+ /** @var ActivityBackend|MockObject */
+ private $activityBackend;
+ /** @var LoggerInterface|MockObject */
+ private $logger;
+ /** @var ActivityUpdaterListener */
+ private $listener;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->activityBackend = $this->createMock(ActivityBackend::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
+
+ $this->listener = new ActivityUpdaterListener(
+ $this->activityBackend,
+ $this->logger
+ );
+ }
+
+ /**
+ * @dataProvider dataForTestHandleCalendarObjectDeletedEvent
+ */
+ public function testHandleCalendarObjectDeletedEvent(int $calendarId, array $calendarData, array $shares, array $objectData, bool $createsActivity): void {
+ $event = new CalendarObjectDeletedEvent($calendarId, $calendarData, $shares, $objectData);
+ $this->logger->expects($this->once())->method('debug')->with(
+ $createsActivity ? "Activity generated for deleted calendar object in calendar $calendarId" : "Calendar object in calendar $calendarId was already in trashbin, skipping deletion activity"
+ );
+ $this->activityBackend->expects($createsActivity ? $this->once() : $this->never())->method('onTouchCalendarObject')->with(
+ Event::SUBJECT_OBJECT_DELETE,
+ $calendarData,
+ $shares,
+ $objectData
+ );
+ $this->listener->handle($event);
+ }
+
+ public function dataForTestHandleCalendarObjectDeletedEvent(): array {
+ return [
+ [1, [], [], [], true],
+ [1, [], [], ['{' . SharingPlugin::NS_NEXTCLOUD . '}deleted-at' => 120], false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataForTestHandleCalendarDeletedEvent
+ */
+ public function testHandleCalendarDeletedEvent(int $calendarId, array $calendarData, array $shares, bool $createsActivity): void {
+ $event = new CalendarDeletedEvent($calendarId, $calendarData, $shares);
+ $this->logger->expects($this->once())->method('debug')->with(
+ $createsActivity ? "Activity generated for deleted calendar $calendarId" : "Calendar $calendarId was already in trashbin, skipping deletion activity"
+ );
+ $this->activityBackend->expects($createsActivity ? $this->once() : $this->never())->method('onCalendarDelete')->with(
+ $calendarData,
+ $shares
+ );
+ $this->listener->handle($event);
+ }
+
+ public function dataForTestHandleCalendarDeletedEvent(): array {
+ return [
+ [1, [], [], true],
+ [1, ['{' . SharingPlugin::NS_NEXTCLOUD . '}deleted-at' => 120], [], false],
+ ];
+ }
+}