Skip to content

Commit 77bbb8b

Browse files
authored
A few more CloudDatabase tests. (#228)
1 parent c3f3978 commit 77bbb8b

2 files changed

Lines changed: 23 additions & 17 deletions

File tree

Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,6 @@ package final class MockCloudDatabase: CloudDatabase {
9393
let shareWasPreviouslySaved = storage[share.recordID.zoneID]?[share.recordID] != nil
9494
guard shareWasPreviouslySaved || isSavingRootRecord
9595
else {
96-
reportIssue(
97-
"""
98-
An added share is being saved without its rootRecord being saved in the same \
99-
operation.
100-
"""
101-
)
10296
saveResults[recordToSave.recordID] = .failure(CKError(.invalidArguments))
10397
continue
10498
}

Tests/SQLiteDataTests/CloudKitTests/MockCloudDatabaseTests.swift

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@
125125
let record = CKRecord(
126126
recordType: "Record",
127127
recordID: CKRecord.ID(
128-
recordName: "Record", zoneID: CKRecordZone.ID(zoneName: "unknownZone"))
128+
recordName: "Record",
129+
zoneID: CKRecordZone.ID(zoneName: "unknownZone")
130+
)
129131
)
130132

131133
let (saveRecordResults, _) = try syncEngine.private.database.modifyRecords(
@@ -389,25 +391,35 @@
389391
@Test func saveShareWithoutRootRecord() async throws {
390392
let record = CKRecord(recordType: "A", recordID: CKRecord.ID(recordName: "1"))
391393
let share = CKShare(rootRecord: record, shareID: CKRecord.ID(recordName: "share"))
392-
try withKnownIssue {
393-
_ = try syncEngine.modifyRecords(scope: .private, saving: [share])
394-
} matching: { issue in
395-
issue.description.hasSuffix(
396-
"""
397-
An added share is being saved without its rootRecord being saved in the \
398-
same operation.
399-
""")
394+
let (saveResults, _) = try syncEngine.private.database.modifyRecords(saving: [share])
395+
let error = #expect(throws: CKError.self) {
396+
try saveResults.values.first?.get()
400397
}
398+
#expect(error?.code == .invalidArguments)
401399
}
402400

403401
@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
404402
@Test func saveShareAndRootThenSaveShareAlone() async throws {
405403
let record = CKRecord(recordType: "A", recordID: CKRecord.ID(recordName: "1"))
406404
let share = CKShare(rootRecord: record, shareID: CKRecord.ID(recordName: "share"))
407-
_ = try syncEngine.modifyRecords(scope: .private, saving: [share, record])
405+
_ = try syncEngine.private.database.modifyRecords(saving: [share, record])
408406

409407
let newShare = try syncEngine.private.database.record(for: CKRecord.ID(recordName: "share"))
410-
_ = try syncEngine.modifyRecords(scope: .private, saving: [newShare])
408+
let (saveResults, _) = try syncEngine.private.database.modifyRecords(saving: [newShare])
409+
_ = try saveResults.values.first?.get()
410+
}
411+
412+
@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
413+
@Test func saveRecordThatWasPreviouslyDeleted() async throws {
414+
let record = CKRecord(recordType: "A", recordID: CKRecord.ID(recordName: "1"))
415+
_ = try syncEngine.private.database.modifyRecords(saving: [record])
416+
let freshRecord = try syncEngine.private.database.record(for: record.recordID)
417+
_ = try syncEngine.private.database.modifyRecords(deleting: [record.recordID])
418+
let (saveResults, _) = try syncEngine.private.database.modifyRecords(saving: [freshRecord])
419+
let error = #expect(throws: CKError.self) {
420+
try saveResults.values.first?.get()
421+
}
422+
#expect(error?.code == .unknownItem)
411423
}
412424
}
413425
}

0 commit comments

Comments
 (0)