From d95d7cd3f7239580360eb0eb5228bee29b14cfe4 Mon Sep 17 00:00:00 2001 From: Lukas Kubanek Date: Wed, 4 Mar 2026 11:41:20 +0100 Subject: [PATCH 1/2] Add assertion exposing mock notify() mutation --- .../CloudKitTests/MergeConflictTests.swift | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift b/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift index 34530951..38bcd913 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift @@ -357,6 +357,51 @@ } } await modificationCallback.notify() + + assertInlineSnapshot(of: container, as: .customDump) { + """ + MockCloudContainer( + privateCloudDatabase: MockCloudDatabase( + databaseScope: .private, + storage: [ + [0]: CKRecord( + recordID: CKRecord.ID(1:reminders/zone/__defaultOwner__), + recordType: "reminders", + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__)), + share: nil, + dueDate🗓️: 0, + id: 1, + id🗓️: 0, + isCompleted: 0, + isCompleted🗓️: 0, + priority🗓️: 0, + remindersListID: 1, + remindersListID🗓️: 0, + title: "Buy milk", + title🗓️: 30, + 🗓️: 30 + ), + [1]: CKRecord( + recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__), + recordType: "remindersLists", + parent: nil, + share: nil, + id: 1, + id🗓️: 0, + title: "", + title🗓️: 0, + 🗓️: 0 + ) + ] + ), + sharedCloudDatabase: MockCloudDatabase( + databaseScope: .shared, + storage: [] + ) + ) + """ + } + try await syncEngine.processPendingRecordZoneChanges(scope: .private) assertInlineSnapshot(of: container, as: .customDump) { From db42b453cf936f94a14fa1e4203b418d7e368a46 Mon Sep 17 00:00:00 2001 From: Lukas Kubanek Date: Wed, 4 Mar 2026 11:41:37 +0100 Subject: [PATCH 2/2] Copy records in notify() to prevent MockCloudDatabase mutation --- Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift index 4716be7b..1f9a6109 100644 --- a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift +++ b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift @@ -93,7 +93,10 @@ extension SyncEngine { return ModifyRecordsCallback { await syncEngine.parentSyncEngine.handleEvent( .fetchedRecordZoneChanges( - modifications: saveResults.values.compactMap { try? $0.get() }, + modifications: saveResults.values.compactMap { + guard let record = try? $0.get() else { return nil } + return record.copy() as? CKRecord + }, deletions: deleteResults.compactMap { recordID, result in (recordsToDeleteByID[recordID]?.recordType).flatMap { recordType in (try? result.get()) != nil