From 2f2394cfa995bba08cdc9f1f945875a437110a9e Mon Sep 17 00:00:00 2001 From: Hamza Mahjoubi Date: Wed, 21 Aug 2024 17:57:08 +0200 Subject: [PATCH] fix: expand select and group by for calandar reminder backend Signed-off-by: Hamza Mahjoubi --- apps/dav/lib/CalDAV/Reminder/Backend.php | 4 ++-- .../dav/tests/unit/CalDAV/Reminder/BackendTest.php | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/dav/lib/CalDAV/Reminder/Backend.php b/apps/dav/lib/CalDAV/Reminder/Backend.php index a4f3c7c6e12f4..0697bb21db3ff 100644 --- a/apps/dav/lib/CalDAV/Reminder/Backend.php +++ b/apps/dav/lib/CalDAV/Reminder/Backend.php @@ -44,12 +44,12 @@ public function __construct(IDBConnection $db, */ public function getRemindersToProcess():array { $query = $this->db->getQueryBuilder(); - $query->select(['cr.*', 'co.calendardata', 'c.displayname', 'c.principaluri','cr.notification_date', 'cr.event_hash', 'cr.type']) + $query->select(['cr.id', 'cr.calendar_id','cr.object_id','cr.is_recurring','cr.uid','cr.recurrence_id','cr.is_recurrence_exception','cr.event_hash','cr.alarm_hash','cr.type','cr.is_relative','cr.notification_date','cr.is_repeat_based','co.calendardata', 'c.displayname', 'c.principaluri']) ->from('calendar_reminders', 'cr') ->where($query->expr()->lte('cr.notification_date', $query->createNamedParameter($this->timeFactory->getTime()))) ->join('cr', 'calendarobjects', 'co', $query->expr()->eq('cr.object_id', 'co.id')) ->join('cr', 'calendars', 'c', $query->expr()->eq('cr.calendar_id', 'c.id')) - ->groupBy('cr.event_hash', 'cr.notification_date', 'cr.type'); + ->groupBy('cr.event_hash', 'cr.notification_date', 'cr.type', 'cr.id', 'cr.calendar_id', 'cr.object_id', 'cr.is_recurring', 'cr.uid', 'cr.recurrence_id', 'cr.is_recurrence_exception', 'cr.alarm_hash', 'cr.is_relative', 'cr.is_repeat_based', 'co.calendardata', 'c.displayname', 'c.principaluri'); $stmt = $query->execute(); return array_map( diff --git a/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php b/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php index 9900c77bf54bd..1bf947139663e 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php @@ -118,7 +118,7 @@ public function testGetRemindersToProcess(): void { unset($rows[0]['id']); unset($rows[1]['id']); - $this->assertEquals($rows[0], [ + $expected1 = [ 'calendar_id' => 1, 'object_id' => 1, 'uid' => 'asd', @@ -127,15 +127,15 @@ public function testGetRemindersToProcess(): void { 'is_recurrence_exception' => false, 'event_hash' => 'asd123', 'alarm_hash' => 'asd567', - 'type' => 'AUDIO', + 'type' => 'EMAIL', 'is_relative' => true, 'notification_date' => 123456, 'is_repeat_based' => false, 'calendardata' => 'Calendar data 123', 'displayname' => 'Displayname 123', 'principaluri' => 'principals/users/user001', - ]); - $this->assertEquals($rows[1], [ + ]; + $expected2 = [ 'calendar_id' => 1, 'object_id' => 1, 'uid' => 'asd', @@ -144,14 +144,16 @@ public function testGetRemindersToProcess(): void { 'is_recurrence_exception' => false, 'event_hash' => 'asd123', 'alarm_hash' => 'asd567', - 'type' => 'EMAIL', + 'type' => 'AUDIO', 'is_relative' => true, 'notification_date' => 123456, 'is_repeat_based' => false, 'calendardata' => 'Calendar data 123', 'displayname' => 'Displayname 123', 'principaluri' => 'principals/users/user001', - ]); + ]; + + $this->assertEqualsCanonicalizing([$rows[0],$rows[1]], [$expected1,$expected2]); } public function testGetAllScheduledRemindersForEvent(): void {