@@ -468,19 +468,91 @@ public function providesCalendarQueryParameters() {
468468 ];
469469 }
470470
471- public function testSyncSupport (): void {
472- $ calendarId = $ this ->createTestCalendar ();
471+ public function testCalendarSynchronization (): void {
473472
474- // fist call without synctoken
475- $ changes = $ this ->backend ->getChangesForCalendar ($ calendarId , '' , 1 );
476- $ syncToken = $ changes ['syncToken ' ];
473+ // construct calendar for testing
474+ $ calendarId = $ this ->createTestCalendar ();
477475
478- // add a change
479- $ event = $ this ->createEvent ($ calendarId , '20130912T130000Z ' , '20130912T140000Z ' );
476+ /** test fresh sync state with NO events in calendar */
477+ // construct test state
478+ $ stateTest = ['syncToken ' => 1 , 'added ' => [], 'modified ' => [], 'deleted ' => []];
479+ // retrieve live state
480+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '' , 1 );
481+ // test live state
482+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test fresh sync state with NO events in calendar ' );
483+
484+ /** test delta sync state with NO events in calendar */
485+ // construct test state
486+ $ stateTest = ['syncToken ' => 1 , 'added ' => [], 'modified ' => [], 'deleted ' => []];
487+ // retrieve live state
488+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '2 ' , 1 );
489+ // test live state
490+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test delta sync state with NO events in calendar ' );
491+
492+ /** add events to calendar */
493+ $ event1 = $ this ->createEvent ($ calendarId , '20240701T130000Z ' , '20240701T140000Z ' );
494+ $ event2 = $ this ->createEvent ($ calendarId , '20240701T140000Z ' , '20240701T150000Z ' );
495+ $ event3 = $ this ->createEvent ($ calendarId , '20240701T150000Z ' , '20240701T160000Z ' );
496+
497+ /** test fresh sync state with events in calendar */
498+ // construct expected state
499+ $ stateTest = ['syncToken ' => 4 , 'added ' => [$ event1 , $ event2 , $ event3 ], 'modified ' => [], 'deleted ' => []];
500+ sort ($ stateTest ['added ' ]);
501+ // retrieve live state
502+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '' , 1 );
503+ // sort live state results
504+ sort ($ stateLive ['added ' ]);
505+ sort ($ stateLive ['modified ' ]);
506+ sort ($ stateLive ['deleted ' ]);
507+ // test live state
508+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test fresh sync state with events in calendar ' );
509+
510+ /** test delta sync state with events in calendar */
511+ // construct expected state
512+ $ stateTest = ['syncToken ' => 4 , 'added ' => [$ event2 , $ event3 ], 'modified ' => [], 'deleted ' => []];
513+ sort ($ stateTest ['added ' ]);
514+ // retrieve live state
515+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '2 ' , 1 );
516+ // sort live state results
517+ sort ($ stateLive ['added ' ]);
518+ sort ($ stateLive ['modified ' ]);
519+ sort ($ stateLive ['deleted ' ]);
520+ // test live state
521+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test delta sync state with events in calendar ' );
522+
523+ /** modify/delete events in calendar */
524+ $ this ->deleteEvent ($ calendarId , $ event1 );
525+ $ this ->modifyEvent ($ calendarId , $ event2 , '20250701T140000Z ' , '20250701T150000Z ' );
526+
527+ /** test fresh sync state with modified/deleted events in calendar */
528+ // construct expected state
529+ $ stateTest = ['syncToken ' => 6 , 'added ' => [$ event2 , $ event3 ], 'modified ' => [], 'deleted ' => []];
530+ sort ($ stateTest ['added ' ]);
531+ // retrieve live state
532+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '' , 1 );
533+ // sort live state results
534+ sort ($ stateLive ['added ' ]);
535+ sort ($ stateLive ['modified ' ]);
536+ sort ($ stateLive ['deleted ' ]);
537+ // test live state
538+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test fresh sync state with modified/deleted events in calendar ' );
539+
540+ /** test delta sync state with modified/deleted events in calendar */
541+ // construct expected state
542+ $ stateTest = ['syncToken ' => 6 , 'added ' => [$ event3 ], 'modified ' => [$ event2 ], 'deleted ' => [$ event1 ]];
543+ // retrieve live state
544+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '3 ' , 1 );
545+ // test live state
546+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test delta sync state with modified/deleted events in calendar ' );
547+
548+ /** test delta sync state with modified/deleted events in calendar and invalid token */
549+ // construct expected state
550+ $ stateTest = ['syncToken ' => 6 , 'added ' => [], 'modified ' => [], 'deleted ' => []];
551+ // retrieve live state
552+ $ stateLive = $ this ->backend ->getChangesForCalendar ($ calendarId , '6 ' , 1 );
553+ // test live state
554+ $ this ->assertEquals ($ stateTest , $ stateLive , 'Failed test delta sync state with modified/deleted events in calendar and invalid token ' );
480555
481- // look for changes
482- $ changes = $ this ->backend ->getChangesForCalendar ($ calendarId , $ syncToken , 1 );
483- $ this ->assertEquals ($ event , $ changes ['added ' ][0 ]);
484556 }
485557
486558 public function testPublications (): void {
0 commit comments