|
4 | 4 |
|
5 | 5 | /** |
6 | 6 | * @copyright 2023 Daniel Kesselberg <mail@danielkesselberg.de> |
| 7 | + * @copyright 2024 Robert C. Schaller <gtbc_robert.schaller@rsxc.de> |
7 | 8 | * |
8 | 9 | * @author 2023 Daniel Kesselberg <mail@danielkesselberg.de> |
9 | 10 | * |
@@ -143,4 +144,70 @@ public function testModifiedUnmodifiedEvent(): void |
143 | 144 | $this->assertEquals([$vEventOld2], $result['old']); |
144 | 145 | $this->assertEquals([$vEventNew2], $result['new']); |
145 | 146 | } |
| 147 | + |
| 148 | + // First test to certify fix for issue nextcloud/server#41084 |
| 149 | + public function testSequenceNumberIncrementDetectedForFirstModificationToEventWithoutZeroInit(): void { |
| 150 | + $vCalendarOld = new VCalendar(); |
| 151 | + $vCalendarNew = new VCalendar(); |
| 152 | + |
| 153 | + $vEventOld = $vCalendarOld->add('VEVENT', [ |
| 154 | + 'UID' => 'uid-1234', |
| 155 | + 'LAST-MODIFIED' => 123456, |
| 156 | + // 'SEQUENCE' => 0, // sequence number may not be set to zero during event creation and instead fully omitted |
| 157 | + 'SUMMARY' => 'Fellowship meeting', |
| 158 | + 'DTSTART' => new \DateTime('2016-01-01 00:00:00'), |
| 159 | + 'RRULE' => 'FREQ=DAILY;INTERVAL=1;UNTIL=20160201T000000Z', |
| 160 | + ]); |
| 161 | + $vEventOld->add('ORGANIZER', 'mailto:gandalf@wiz.ard'); |
| 162 | + $vEventOld->add('ATTENDEE', 'mailto:' . 'frodo@hobb.it', ['RSVP' => 'TRUE', 'CN' => 'Frodo']); |
| 163 | + |
| 164 | + $vEventNew = $vCalendarNew->add('VEVENT', [ |
| 165 | + 'UID' => 'uid-1234', |
| 166 | + 'LAST-MODIFIED' => 123456, |
| 167 | + 'SEQUENCE' => 1, |
| 168 | + 'SUMMARY' => 'Fellowship meeting', |
| 169 | + 'DTSTART' => new \DateTime('2016-01-01 00:00:00'), |
| 170 | + 'RRULE' => 'FREQ=DAILY;INTERVAL=1;UNTIL=20160201T000000Z', |
| 171 | + ]); |
| 172 | + $vEventNew->add('ORGANIZER', 'mailto:gandalf@wiz.ard'); |
| 173 | + $vEventNew->add('ATTENDEE', 'mailto:' . 'frodo@hobb.it', ['RSVP' => 'TRUE', 'CN' => 'Frodo']); |
| 174 | + |
| 175 | + $result = $this->eventComparisonService->findModified($vCalendarNew, $vCalendarOld); |
| 176 | + $this->assertEquals([$vEventOld], $result['old']); |
| 177 | + $this->assertEquals([$vEventNew], $result['new']); |
| 178 | + } |
| 179 | + |
| 180 | + // Second test to certify fix for issue nextcloud/server#41084 |
| 181 | + public function testSequenceNumberIncrementDetectedForFirstModificationToEventWithZeroInit(): void { |
| 182 | + $vCalendarOld = new VCalendar(); |
| 183 | + $vCalendarNew = new VCalendar(); |
| 184 | + |
| 185 | + $vEventOld = $vCalendarOld->add('VEVENT', [ |
| 186 | + 'UID' => 'uid-1234', |
| 187 | + 'LAST-MODIFIED' => 123456, |
| 188 | + 'SEQUENCE' => 0, |
| 189 | + 'SUMMARY' => 'Fellowship meeting', |
| 190 | + 'DTSTART' => new \DateTime('2016-01-01 00:00:00'), |
| 191 | + 'RRULE' => 'FREQ=DAILY;INTERVAL=1;UNTIL=20160201T000000Z', |
| 192 | + ]); |
| 193 | + $vEventOld->add('ORGANIZER', 'mailto:gandalf@wiz.ard'); |
| 194 | + $vEventOld->add('ATTENDEE', 'mailto:' . 'frodo@hobb.it', ['RSVP' => 'TRUE', 'CN' => 'Frodo']); |
| 195 | + |
| 196 | + $vEventNew = $vCalendarNew->add('VEVENT', [ |
| 197 | + 'UID' => 'uid-1234', |
| 198 | + 'LAST-MODIFIED' => 123456, |
| 199 | + 'SEQUENCE' => 1, |
| 200 | + 'SUMMARY' => 'Fellowship meeting', |
| 201 | + 'DTSTART' => new \DateTime('2016-01-01 00:00:00'), |
| 202 | + 'RRULE' => 'FREQ=DAILY;INTERVAL=1;UNTIL=20160201T000000Z', |
| 203 | + ]); |
| 204 | + $vEventNew->add('ORGANIZER', 'mailto:gandalf@wiz.ard'); |
| 205 | + $vEventNew->add('ATTENDEE', 'mailto:' . 'frodo@hobb.it', ['RSVP' => 'TRUE', 'CN' => 'Frodo']); |
| 206 | + |
| 207 | + $result = $this->eventComparisonService->findModified($vCalendarNew, $vCalendarOld); |
| 208 | + $this->assertEquals([$vEventOld], $result['old']); |
| 209 | + $this->assertEquals([$vEventNew], $result['new']); |
| 210 | + } |
| 211 | + |
| 212 | + |
146 | 213 | } |
0 commit comments