diff --git a/lib/Cron/ScheduledNotifications.php b/lib/Cron/ScheduledNotifications.php index d553492dc..997d51798 100644 --- a/lib/Cron/ScheduledNotifications.php +++ b/lib/Cron/ScheduledNotifications.php @@ -27,6 +27,8 @@ use OC\BackgroundJob\Job; use OCA\Deck\Db\Card; use OCA\Deck\Db\CardMapper; use OCA\Deck\Notification\NotificationHelper; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\ILogger; class ScheduledNotifications extends Job { @@ -34,13 +36,17 @@ class ScheduledNotifications extends Job { protected $cardMapper; /** @var NotificationHelper */ protected $notificationHelper; + /** @var ILogger */ + protected $logger; public function __construct( CardMapper $cardMapper, - NotificationHelper $notificationHelper + NotificationHelper $notificationHelper, + ILogger $logger ) { $this->cardMapper = $cardMapper; $this->notificationHelper = $notificationHelper; + $this->logger = $logger; } /** @@ -52,8 +58,13 @@ class ScheduledNotifications extends Job { $cards = $this->cardMapper->findOverdue(); /** @var Card $card */ foreach ($cards as $card) { - $this->notificationHelper->sendCardDuedate($card); + try { + $this->notificationHelper->sendCardDuedate($card); + } catch (DoesNotExistException $e) { + // Skip if any error occurs + $this->logger->debug('Could not create overdue notification for card with id ' . $card->getId()); + } } } -} \ No newline at end of file +} diff --git a/lib/Notification/NotificationHelper.php b/lib/Notification/NotificationHelper.php index b47c02832..dcc036e25 100644 --- a/lib/Notification/NotificationHelper.php +++ b/lib/Notification/NotificationHelper.php @@ -67,6 +67,10 @@ class NotificationHelper { $this->currentUser = $userId; } + /** + * @param $card + * @throws \OCP\AppFramework\Db\DoesNotExistException + */ public function sendCardDuedate($card) { // check if notification has already been sent // ideally notifications should not be deleted once seen by the user so we can diff --git a/tests/unit/Cron/ScheduledNoificationsTest.php b/tests/unit/Cron/ScheduledNoificationsTest.php index 85d9f1341..ea6a38bee 100644 --- a/tests/unit/Cron/ScheduledNoificationsTest.php +++ b/tests/unit/Cron/ScheduledNoificationsTest.php @@ -28,6 +28,7 @@ use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\Card; use OCA\Deck\Db\CardMapper; use OCA\Deck\Notification\NotificationHelper; +use OCP\ILogger; class ScheduledNoificationsTest extends \Test\TestCase { @@ -35,6 +36,8 @@ class ScheduledNoificationsTest extends \Test\TestCase { protected $cardMapper; /** @var NotificationHelper|\PHPUnit\Framework\MockObject\MockObject */ protected $notificationHelper; + /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */ + protected $logger; /** @var ScheduledNotifications */ protected $scheduledNotifications; @@ -42,7 +45,8 @@ class ScheduledNoificationsTest extends \Test\TestCase { parent::setUp(); $this->cardMapper = $this->createMock(CardMapper::class); $this->notificationHelper = $this->createMock(NotificationHelper::class); - $this->scheduledNotifications = new ScheduledNotifications($this->cardMapper, $this->notificationHelper); + $this->logger = $this->createMock(ILogger::class); + $this->scheduledNotifications = new ScheduledNotifications($this->cardMapper, $this->notificationHelper, $this->logger); } public function testDeleteCron() {