From ab3a239853638eda699eccea1816122f25ef5bc7 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 +- .../unit/CalDAV/Reminder/BackendTest.php | 40 ++++++++++--------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/apps/dav/lib/CalDAV/Reminder/Backend.php b/apps/dav/lib/CalDAV/Reminder/Backend.php index 1fa30f2538b..f5608760b61 100644 --- a/apps/dav/lib/CalDAV/Reminder/Backend.php +++ b/apps/dav/lib/CalDAV/Reminder/Backend.php @@ -44,12 +44,12 @@ class Backend { */ 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 75b058c0b84..e1a0485f8a9 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php @@ -118,24 +118,7 @@ class BackendTest extends TestCase { unset($rows[0]['id']); unset($rows[1]['id']); - $this->assertEquals($rows[0], [ - 'calendar_id' => 1, - 'object_id' => 1, - 'uid' => 'asd', - 'is_recurring' => false, - 'recurrence_id' => 123458, - 'is_recurrence_exception' => false, - 'event_hash' => 'asd123', - 'alarm_hash' => 'asd567', - 'type' => 'AUDIO', - '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], [ + $expected1 = [ 'calendar_id' => 1, 'object_id' => 1, 'uid' => 'asd', @@ -151,7 +134,26 @@ class BackendTest extends TestCase { 'calendardata' => 'Calendar data 123', 'displayname' => 'Displayname 123', 'principaluri' => 'principals/users/user001', - ]); + ]; + $expected2 = [ + 'calendar_id' => 1, + 'object_id' => 1, + 'uid' => 'asd', + 'is_recurring' => false, + 'recurrence_id' => 123458, + 'is_recurrence_exception' => false, + 'event_hash' => 'asd123', + 'alarm_hash' => 'asd567', + '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 {