summaryrefslogtreecommitdiffstats
path: root/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php')
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php627
1 files changed, 453 insertions, 174 deletions
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
index 061c3f16e38..a9acca66a81 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Thomas Citharel
*
@@ -21,12 +22,15 @@
*/
namespace OCA\DAV\Tests\unit\CalDAV\Reminder;
+use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Reminder\AbstractNotificationProvider;
use OCA\DAV\CalDAV\Reminder\Backend;
+use OCA\DAV\CalDAV\Reminder\INotificationProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProviderManager;
use OCA\DAV\CalDAV\Reminder\NotificationProvider\EmailProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProvider\PushProvider;
use OCA\DAV\CalDAV\Reminder\ReminderService;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
@@ -51,6 +55,15 @@ class ReminderServiceTest extends TestCase {
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
private $userSession;
+ /** @var CalDavBackend|\PHPUnit\Framework\MockObject\MockObject */
+ private $caldavBackend;
+
+ /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */
+ private $timeFactory;
+
+ /** @var ReminderService */
+ private $reminderService;
+
public const CALENDAR_DATA = <<<EOD
BEGIN:VCALENDAR
PRODID:-//Nextcloud calendar v1.6.4
@@ -68,6 +81,87 @@ BEGIN:VALARM
ACTION:EMAIL
TRIGGER:-PT15M
END:VALARM
+BEGIN:VALARM
+ACTION:DISPLAY
+TRIGGER;VALUE=DATE-TIME:20160608T000000Z
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+EOD;
+
+ public const CALENDAR_DATA_REPEAT = <<<EOD
+BEGIN:VCALENDAR
+PRODID:-//Nextcloud calendar v1.6.4
+BEGIN:VEVENT
+CREATED:20160602T133732
+DTSTAMP:20160602T133732
+LAST-MODIFIED:20160602T133732
+UID:wej2z68l9h
+SUMMARY:Test Event
+LOCATION:Somewhere ...
+DESCRIPTION:maybe ....
+DTSTART;TZID=Europe/Berlin;VALUE=DATE:20160609
+DTEND;TZID=Europe/Berlin;VALUE=DATE:20160610
+BEGIN:VALARM
+ACTION:EMAIL
+TRIGGER:-PT15M
+REPEAT:4
+DURATION:PT2M
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+EOD;
+
+ public const CALENDAR_DATA_RECURRING = <<<EOD
+BEGIN:VCALENDAR
+PRODID:-//Nextcloud calendar v1.6.4
+BEGIN:VEVENT
+CREATED:20160602T133732
+DTSTAMP:20160602T133732
+LAST-MODIFIED:20160602T133732
+UID:wej2z68l9h
+SUMMARY:Test Event
+LOCATION:Somewhere ...
+DESCRIPTION:maybe ....
+DTSTART;TZID=Europe/Berlin;VALUE=DATE:20160609
+DTEND;TZID=Europe/Berlin;VALUE=DATE:20160610
+RRULE:FREQ=WEEKLY
+BEGIN:VALARM
+ACTION:EMAIL
+TRIGGER:-PT15M
+END:VALARM
+BEGIN:VALARM
+ACTION:EMAIL
+TRIGGER:-P8D
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+EOD;
+
+ public const CALENDAR_DATA_RECURRING_REPEAT = <<<EOD
+BEGIN:VCALENDAR
+PRODID:-//Nextcloud calendar v1.6.4
+BEGIN:VEVENT
+CREATED:20160602T133732
+DTSTAMP:20160602T133732
+LAST-MODIFIED:20160602T133732
+UID:wej2z68l9h
+SUMMARY:Test Event
+LOCATION:Somewhere ...
+DESCRIPTION:maybe ....
+DTSTART;TZID=Europe/Berlin;VALUE=DATE:20160609
+DTEND;TZID=Europe/Berlin;VALUE=DATE:20160610
+RRULE:FREQ=WEEKLY
+BEGIN:VALARM
+ACTION:EMAIL
+TRIGGER:-PT15M
+REPEAT:4
+DURATION:PT2M
+END:VALARM
+BEGIN:VALARM
+ACTION:EMAIL
+TRIGGER:-P8D
+END:VALARM
END:VEVENT
END:VCALENDAR
EOD;
@@ -79,198 +173,383 @@ EOD;
$this->notificationProviderManager = $this->createMock(NotificationProviderManager::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
- $this->userSession = $this->createMock(IUserSession::class);
- }
+ $this->caldavBackend = $this->createMock(CalDavBackend::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
- public function dataTestProcessReminders(): array
- {
- return [
- [
- [], null
- ],
- [
- [
- [
- 'calendardata' => self::CALENDAR_DATA,
- 'displayname' => 'Personal',
- 'type' => 'EMAIL',
- 'uid' => 1,
- 'id' => 1,
- ],
- ],
- $this->createMock(EmailProvider::class),
- ],
- [
- [
- [
- 'calendardata' => self::CALENDAR_DATA,
- 'displayname' => 'Personal',
- 'type' => 'DISPLAY',
- 'uid' => 1,
- 'id' => 1,
- ],
- ],
- $this->createMock(PushProvider::class),
- ]
- ];
- }
+ $this->caldavBackend->method('getShares')->willReturn([]);
- /**
- * @dataProvider dataTestProcessReminders
- * @param array $reminders
- * @param AbstractNotificationProvider|null $notificationProvider
- * @throws \OCA\DAV\CalDAV\Reminder\NotificationProvider\ProviderNotAvailableException
- * @throws \OCA\DAV\CalDAV\Reminder\NotificationTypeDoesNotExistException
- * @throws \OC\User\NoUserException
- */
- public function testProcessReminders(array $reminders, ?AbstractNotificationProvider $notificationProvider): void
- {
- $user = $this->createMock(IUser::class);
-
- $this->backend->expects($this->once())->method('getRemindersToProcess')->willReturn($reminders);
- if (count($reminders) > 0) {
- $this->userManager->expects($this->exactly(count($reminders)))->method('get')->willReturn($user);
- $this->backend->expects($this->exactly(count($reminders)))->method('removeReminder');
- $this->notificationProviderManager->expects($this->exactly(count($reminders)))->method('getProvider')->willReturn($notificationProvider);
- }
-
- $reminderService = new ReminderService($this->backend, $this->notificationProviderManager, $this->userManager, $this->groupManager, $this->userSession);
- $reminderService->processReminders();
+ $this->reminderService = new ReminderService($this->backend,
+ $this->notificationProviderManager,
+ $this->userManager,
+ $this->groupManager,
+ $this->caldavBackend,
+ $this->timeFactory);
}
- /**
- * @expectedException OC\User\NoUserException
- */
- public function testProcessReminderWithBadUser(): void
- {
- $this->backend->expects($this->once())->method('getRemindersToProcess')->willReturn([
- [
- 'calendardata' => self::CALENDAR_DATA,
- 'type' => 'DISPLAY',
- 'uid' => 1,
- 'id' => 1,
- ]
- ]);
- $this->userManager->expects($this->once())->method('get')->with(1)->willReturn(null);
- $reminderService = new ReminderService($this->backend, $this->notificationProviderManager, $this->userManager, $this->groupManager, $this->userSession);
- $reminderService->processReminders();
+ public function testOnCalendarObjectDelete():void {
+ $this->backend->expects($this->once())
+ ->method('cleanRemindersForEvent')
+ ->with(44);
+
+ $action = '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject';
+ $objectData = [
+ 'id' => '44',
+ 'component' => 'vevent',
+ ];
+
+ $this->reminderService->onTouchCalendarObject($action, $objectData);
}
- public function providesTouchCalendarObject(): array
- {
- return [
- [
- '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject',
- [
- 'principaluri' => 'principals/users/personal'
- ],
- [],
- [
- 'calendarid' => 1,
- 'uri' => 'something.ics',
- ],
- 0
- ],
- [
- '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject',
- [
- 'principaluri' => 'principals/users/personal'
- ],
- [],
- [
- 'calendarid' => 1,
- 'uri' => 'something.ics',
- 'calendardata' => self::CALENDAR_DATA
- ],
- 0
- ],
- [
- '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject',
- [
- 'principaluri' => 'principals/users/someone',
- 'uri' => 'personal'
- ],
+ public function testOnCalendarObjectCreateSingleEntry():void {
+ $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
+ $objectData = [
+ 'calendardata' => self::CALENDAR_DATA,
+ 'id' => '42',
+ 'calendarid' => '1337',
+ 'component' => 'vevent',
+ ];
+
+ $this->backend->expects($this->exactly(2))
+ ->method('insertReminder')
+ ->withConsecutive(
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'de919af7429d3b5c11e8b9d289b411a6', 'EMAIL', true, 1465429500, false],
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', '35b3eae8e792aa2209f0b4e1a302f105', 'DISPLAY', false, 1465344000, false]
+ )
+ ->willReturn(1);
+
+ $this->timeFactory->expects($this->once())
+ ->method('getDateTime')
+ ->with()
+ ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00'));
+
+ $this->reminderService->onTouchCalendarObject($action, $objectData);
+ }
+
+ public function testOnCalendarObjectCreateSingleEntryWithRepeat(): void {
+ $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
+ $objectData = [
+ 'calendardata' => self::CALENDAR_DATA_REPEAT,
+ 'id' => '42',
+ 'calendarid' => '1337',
+ 'component' => 'vevent',
+ ];
+
+ $this->backend->expects($this->exactly(5))
+ ->method('insertReminder')
+ ->withConsecutive(
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1465429500, false],
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1465429620, true],
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1465429740, true],
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1465429860, true],
+ [1337, 42, 'wej2z68l9h', false, 1465430400, false, '5c70531aab15c92b52518ae10a2f78a4', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1465429980, true]
+ )
+ ->willReturn(1);
+
+ $this->timeFactory->expects($this->once())
+ ->method('getDateTime')
+ ->with()
+ ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00'));
+
+ $this->reminderService->onTouchCalendarObject($action, $objectData);
+ }
+
+ public function testOnCalendarObjectCreateRecurringEntry(): void {
+ $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
+ $objectData = [
+ 'calendardata' => self::CALENDAR_DATA_RECURRING,
+ 'id' => '42',
+ 'calendarid' => '1337',
+ 'component' => 'vevent',
+ ];
+
+ $this->backend->expects($this->exactly(2))
+ ->method('insertReminder')
+ ->withConsecutive(
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'de919af7429d3b5c11e8b9d289b411a6', 'EMAIL', true, 1467243900, false],
+ [1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', '8996992118817f9f311ac5cc56d1cc97', 'EMAIL', true, 1467158400, false]
+ )
+ ->willReturn(1);
+
+ $this->timeFactory->expects($this->once())
+ ->method('getDateTime')
+ ->with()
+ ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00'));
+
+ $this->reminderService->onTouchCalendarObject($action, $objectData);
+ }
+
+ public function testOnCalendarObjectCreateRecurringEntryWithRepeat():void {
+ $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
+ $objectData = [
+ 'calendardata' => self::CALENDAR_DATA_RECURRING_REPEAT,
+ 'id' => '42',
+ 'calendarid' => '1337',
+ 'component' => 'vevent',
+ ];
+
+ $this->backend->expects($this->exactly(6))
+ ->method('insertReminder')
+ ->withConsecutive(
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467243900, false],
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467244020, true],
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467244140, true],
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467244260, true],
+ [1337, 42, 'wej2z68l9h', true, 1467244800, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467244380, true],
+ [1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', '8996992118817f9f311ac5cc56d1cc97', 'EMAIL', true, 1467158400, false]
+ )
+ ->willReturn(1);
+
+ $this->timeFactory->expects($this->once())
+ ->method('getDateTime')
+ ->with()
+ ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00'));
+
+ $this->reminderService->onTouchCalendarObject($action, $objectData);
+ }
+
+ public function testProcessReminders():void {
+ $this->backend->expects($this->at(0))
+ ->method('getRemindersToProcess')
+ ->with()
+ ->willReturn([
[
- [
- '{http://owncloud.org/ns}principal' => 'principals/users/someone'
- ]
+ 'id' => 1,
+ 'calendar_id' => 1337,
+ 'object_id' => 42,
+ 'uid' => 'wej2z68l9h',
+ 'is_recurring' => false,
+ 'recurrence_id' => 1465430400,
+ 'is_recurrence_exception' => false,
+ 'event_hash' => '5c70531aab15c92b52518ae10a2f78a4',
+ 'alarm_hash' => 'de919af7429d3b5c11e8b9d289b411a6',
+ 'type' => 'EMAIL',
+ 'is_relative' => true,
+ 'notification_date' => 1465429500,
+ 'is_repeat_based' => false,
+ 'calendardata' => self::CALENDAR_DATA,
+ 'displayname' => 'Displayname 123',
+ 'principaluri' => 'principals/users/user001',
],
[
- 'calendarid' => 1,
- 'uri' => 'something.ics',
- 'calendardata' => self::CALENDAR_DATA
+ 'id' => 2,
+ 'calendar_id' => 1337,
+ 'object_id' => 42,
+ 'uid' => 'wej2z68l9h',
+ 'is_recurring' => false,
+ 'recurrence_id' => 1465430400,
+ 'is_recurrence_exception' => false,
+ 'event_hash' => '5c70531aab15c92b52518ae10a2f78a4',
+ 'alarm_hash' => 'ecacbf07d413c3c78d1ac7ad8c469602',
+ 'type' => 'EMAIL',
+ 'is_relative' => true,
+ 'notification_date' => 1465429740,
+ 'is_repeat_based' => true,
+ 'calendardata' => self::CALENDAR_DATA_REPEAT,
+ 'displayname' => 'Displayname 123',
+ 'principaluri' => 'principals/users/user001',
],
- 0
- ],
- [
- '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject',
[
- 'principaluri' => 'principals/users/someone',
- 'uri' => 'personal'
+ 'id' => 3,
+ 'calendar_id' => 1337,
+ 'object_id' => 42,
+ 'uid' => 'wej2z68l9h',
+ 'is_recurring' => false,
+ 'recurrence_id' => 1465430400,
+ 'is_recurrence_exception' => false,
+ 'event_hash' => '5c70531aab15c92b52518ae10a2f78a4',
+ 'alarm_hash' => '35b3eae8e792aa2209f0b4e1a302f105',
+ 'type' => 'DISPLAY',
+ 'is_relative' => false,
+ 'notification_date' => 1465344000,
+ 'is_repeat_based' => false,
+ 'calendardata' => self::CALENDAR_DATA,
+ 'displayname' => 'Displayname 123',
+ 'principaluri' => 'principals/users/user001',
],
[
- [
- '{http://owncloud.org/ns}principal' => 'principals/groups/somegroup'
- ]
+ 'id' => 4,
+ 'calendar_id' => 1337,
+ 'object_id' => 42,
+ 'uid' => 'wej2z68l9h',
+ 'is_recurring' => true,
+ 'recurrence_id' => 1467244800,
+ 'is_recurrence_exception' => false,
+ 'event_hash' => 'fbdb2726bc0f7dfacac1d881c1453e20',
+ 'alarm_hash' => 'ecacbf07d413c3c78d1ac7ad8c469602',
+ 'type' => 'EMAIL',
+ 'is_relative' => true,
+ 'notification_date' => 1467243900,
+ 'is_repeat_based' => false,
+ 'calendardata' => self::CALENDAR_DATA_RECURRING_REPEAT,
+ 'displayname' => 'Displayname 123',
+ 'principaluri' => 'principals/users/user001',
],
[
- 'calendarid' => 1,
- 'uri' => 'something.ics',
- 'calendardata' => self::CALENDAR_DATA
- ],
- 1
- ]
- ];
- }
+ 'id' => 5,
+ 'calendar_id' => 1337,
+ 'object_id' => 42,
+ 'uid' => 'wej2z68l9h',
+ 'is_recurring' => true,
+ 'recurrence_id' => 1467849600,
+ 'is_recurrence_exception' => false,
+ 'event_hash' => 'fbdb2726bc0f7dfacac1d881c1453e20',
+ 'alarm_hash' => '8996992118817f9f311ac5cc56d1cc97',
+ 'type' => 'EMAIL',
+ 'is_relative' => true,
+ 'notification_date' => 1467158400,
+ 'is_repeat_based' => false,
+ 'calendardata' => self::CALENDAR_DATA_RECURRING,
+ 'displayname' => 'Displayname 123',
+ 'principaluri' => 'principals/users/user001',
+ ]
+ ]);
- /**
- * @dataProvider providesTouchCalendarObject
- * @param string $action
- * @param array $calendarData
- * @param array $shares
- * @param array $objectData
- * @param int $numberOfGroups
- * @throws \OC\User\NoUserException
- * @throws \Sabre\VObject\InvalidDataException
- */
- public function testOnTouchCalendarObject(string $action, array $calendarData, array $shares, array $objectData, int $numberOfGroups): void
- {
- $this->backend->expects($this->once())->method('cleanRemindersForEvent')->with($objectData['calendarid'], $objectData['uri']);
-
- if ($action !== '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject') {
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())->method('getUID')->willReturn('user');
-
- $this->userSession->expects($this->once())->method('getUser')->willReturn($user);
- if ($numberOfGroups === 0) {
- $this->backend->expects($this->exactly(count($shares) + 1))->method('insertReminder');
- } else {
- $group = $this->createMock(IGroup::class);
- $groupUser = $this->createMock(IUser::class);
- $groupUser->expects($this->once())->method('getUID')->willReturn('groupuser');
- $group->expects($this->once())->method('getUsers')->willReturn([$groupUser]);
- $this->groupManager->expects($this->exactly($numberOfGroups))->method('get')->willReturn($group);
- }
- }
- $reminderService = new ReminderService($this->backend, $this->notificationProviderManager, $this->userManager, $this->groupManager, $this->userSession);
- $reminderService->onTouchCalendarObject($action, $calendarData, $shares, $objectData);
- }
+ $this->notificationProviderManager->expects($this->at(0))
+ ->method('hasProvider')
+ ->with('EMAIL')
+ ->willReturn(true);
- /**
- * @expectedException OC\User\NoUserException
- */
- public function testOnTouchCalendarObjectWithNoSession(): void
- {
- $this->backend->expects($this->once())->method('cleanRemindersForEvent');
- $this->userSession->expects($this->once())->method('getUser')->willReturn(null);
+ $provider1 = $this->createMock(INotificationProvider::class);
+ $this->notificationProviderManager->expects($this->at(1))
+ ->method('getProvider')
+ ->with('EMAIL')
+ ->willReturn($provider1);
- $reminderService = new ReminderService($this->backend, $this->notificationProviderManager, $this->userManager, $this->groupManager, $this->userSession);
- $reminderService->onTouchCalendarObject('', ['principaluri' => 'foo'], [], ['calendarid' => 1, 'uri' => 'bar']);
- }
+ $this->notificationProviderManager->expects($this->at(2))
+ ->method('hasProvider')
+ ->with('EMAIL')
+ ->willReturn(true);
+
+ $provider2 = $this->createMock(INotificationProvider::class);
+ $this->notificationProviderManager->expects($this->at(3))
+ ->method('getProvider')
+ ->with('EMAIL')
+ ->willReturn($provider2);
+
+ $this->notificationProviderManager->expects($this->at(4))
+ ->method('hasProvider')
+ ->with('DISPLAY')
+ ->willReturn(true);
+
+ $provider3 = $this->createMock(INotificationProvider::class);
+ $this->notificationProviderManager->expects($this->at(5))
+ ->method('getProvider')
+ ->with('DISPLAY')
+ ->willReturn($provider3);
+
+ $this->notificationProviderManager->expects($this->at(6))
+ ->method('hasProvider')
+ ->with('EMAIL')
+ ->willReturn(true);
+
+ $provider4 = $this->createMock(INotificationProvider::class);
+ $this->notificationProviderManager->expects($this->at(7))
+ ->method('getProvider')
+ ->with('EMAIL')
+ ->willReturn($provider4);
+
+ $this->notificationProviderManager->expects($this->at(8))
+ ->method('hasProvider')
+ ->with('EMAIL')
+ ->willReturn(true);
+
+ $provider5 = $this->createMock(INotificationProvider::class);
+ $this->notificationProviderManager->expects($this->at(9))
+ ->method('getProvider')
+ ->with('EMAIL')
+ ->willReturn($provider5);
+
+ $user = $this->createMock(IUser::class);
+ $this->userManager->expects($this->exactly(5))
+ ->method('get')
+ ->with('user001')
+ ->willReturn($user);
+
+ $provider1->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function($vevent) {
+ if ($vevent->DTSTART->getDateTime()->format(\DateTime::ATOM) !== '2016-06-09T00:00:00+00:00') {
+ return false;
+ }
+ return true;
+ }, 'Displayname 123', $user));
+ $provider2->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function($vevent) {
+ if ($vevent->DTSTART->getDateTime()->format(\DateTime::ATOM) !== '2016-06-09T00:00:00+00:00') {
+ return false;
+ }
+ return true;
+ }, 'Displayname 123', $user));
+ $provider3->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function($vevent) {
+ if ($vevent->DTSTART->getDateTime()->format(\DateTime::ATOM) !== '2016-06-09T00:00:00+00:00') {
+ return false;
+ }
+ return true;
+ }, 'Displayname 123', $user));
+ $provider4->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function($vevent) {
+ if ($vevent->DTSTART->getDateTime()->format(\DateTime::ATOM) !== '2016-06-30T00:00:00+00:00') {
+ return false;
+ }
+ return true;
+ }, 'Displayname 123', $user));
+ $provider5->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function($vevent) {
+ if ($vevent->DTSTART->getDateTime()->format(\DateTime::ATOM) !== '2016-07-07T00:00:00+00:00') {
+ return false;
+ }
+ return true;
+ }, 'Displayname 123', $user));
+
+ $this->backend->expects($this->at(1))
+ ->method('removeReminder')
+ ->with(1);
+ $this->backend->expects($this->at(2))
+ ->method('removeReminder')
+ ->with(2);
+ $this->backend->expects($this->at(3))
+ ->method('removeReminder')
+ ->with(3);
+ $this->backend->expects($this->at(4))
+ ->method('removeReminder')
+ ->with(4);
+ $this->backend->expects($this->at(5))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467848700, false)
+ ->willReturn(99);
+
+ $this->backend->expects($this->at(6))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467848820, true)
+ ->willReturn(99);
+ $this->backend->expects($this->at(7))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467848940, true)
+ ->willReturn(99);
+ $this->backend->expects($this->at(8))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467849060, true)
+ ->willReturn(99);
+ $this->backend->expects($this->at(9))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1467849600, false, 'fbdb2726bc0f7dfacac1d881c1453e20', 'ecacbf07d413c3c78d1ac7ad8c469602', 'EMAIL', true, 1467849180, true)
+ ->willReturn(99);
+ $this->backend->expects($this->at(10))
+ ->method('removeReminder')
+ ->with(5);
+ $this->backend->expects($this->at(11))
+ ->method('insertReminder')
+ ->with(1337, 42, 'wej2z68l9h', true, 1468454400, false, 'fbdb2726bc0f7dfacac1d881c1453e20', '8996992118817f9f311ac5cc56d1cc97', 'EMAIL', true, 1467763200, false)
+ ->willReturn(99);
+
+ $this->timeFactory->method('getDateTime')
+ ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00'));
- public function testOnTouchCalendarObjectWithNoCalendarURI(): void
- {
- $reminderService = new ReminderService($this->backend, $this->notificationProviderManager, $this->userManager, $this->groupManager, $this->userSession);
- $this->assertNull($reminderService->onTouchCalendarObject('', [], [], []));
+ $this->reminderService->processReminders();
}
}