From d086b6c81d32c83a0bd480cc29819a4d5e1cc425 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 26 Jan 2024 16:16:37 +0100 Subject: [PATCH] fix(tests): Make PHP 8.1.2 with Datetime Diff Bug pass the notifier test Signed-off-by: Joas Schilling --- .../tests/unit/CalDAV/Reminder/NotifierTest.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php index 08677d202670b..10c421921b03c 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php @@ -142,6 +142,14 @@ public function testPrepareWrongSubject(): void { $this->notifier->prepare($notification, 'en'); } + private static function hasPhpDatetimeDiffBug(): bool { + $d1 = \DateTime::createFromFormat(\DateTimeInterface::ATOM, '2023-11-22T11:52:00+01:00'); + $d2 = new \DateTime('2023-11-22T10:52:03', new \DateTimeZone('UTC')); + + // The difference is 3 seconds, not -1year+11months+… + return $d1->diff($d2)->y < 0; + } + public function dataPrepare(): array { return [ [ @@ -150,7 +158,7 @@ public function dataPrepare(): array { 'title' => 'Title of this event', 'start_atom' => '2005-08-15T15:52:01+02:00' ], - 'Title of this event (in 1 hour, 52 minutes)', + self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (in 1 hour, 52 minutes)', [ 'title' => 'Title of this event', 'description' => null, @@ -172,7 +180,7 @@ public function dataPrepare(): array { 'title' => 'Title of this event', 'start_atom' => '2005-08-15T13:00:00+02:00', ], - 'Title of this event (1 hour ago)', + self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (1 hour ago)', [ 'title' => 'Title of this event', 'description' => null, @@ -281,7 +289,7 @@ public function testPassedEvent(): void { $notification->expects($this->once()) ->method('setParsedSubject') - ->with('Title of this event (6 hours ago)') + ->with(self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (6 hours ago)') ->willReturnSelf(); $this->expectException(AlreadyProcessedException::class);