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