|
1249 | 1249 | } |
1250 | 1250 | } |
1251 | 1251 |
|
| 1252 | + // Deleting a root shared record while the owner of that record deletes the associated CKShare |
| 1253 | + // as well as any other associated records. |
1252 | 1254 | @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) |
1253 | 1255 | @Test func deleteRootSharedRecord_CurrentUserOwnsRecord() async throws { |
1254 | 1256 | let remindersList = RemindersList(id: 1, title: "Personal") |
1255 | 1257 | try await userDatabase.userWrite { db in |
1256 | 1258 | try db.seed { |
1257 | 1259 | remindersList |
| 1260 | + Reminder(id: 1, remindersListID: 1) |
1258 | 1261 | } |
1259 | 1262 | } |
1260 | 1263 | try await syncEngine.processPendingRecordZoneChanges(scope: .private) |
1261 | 1264 |
|
1262 | 1265 | let _ = try await syncEngine.share(record: remindersList, configure: { _ in }) |
1263 | 1266 |
|
| 1267 | + assertInlineSnapshot(of: container, as: .customDump) { |
| 1268 | + """ |
| 1269 | + MockCloudContainer( |
| 1270 | + privateCloudDatabase: MockCloudDatabase( |
| 1271 | + databaseScope: .private, |
| 1272 | + storage: [ |
| 1273 | + [0]: CKRecord( |
| 1274 | + recordID: CKRecord.ID(share-1:remindersLists/zone/__defaultOwner__), |
| 1275 | + recordType: "cloudkit.share", |
| 1276 | + parent: nil, |
| 1277 | + share: nil |
| 1278 | + ), |
| 1279 | + [1]: CKRecord( |
| 1280 | + recordID: CKRecord.ID(1:reminders/zone/__defaultOwner__), |
| 1281 | + recordType: "reminders", |
| 1282 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__)), |
| 1283 | + share: nil, |
| 1284 | + id: 1, |
| 1285 | + isCompleted: 0, |
| 1286 | + remindersListID: 1, |
| 1287 | + title: "" |
| 1288 | + ), |
| 1289 | + [2]: CKRecord( |
| 1290 | + recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__), |
| 1291 | + recordType: "remindersLists", |
| 1292 | + parent: nil, |
| 1293 | + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/zone/__defaultOwner__)), |
| 1294 | + id: 1, |
| 1295 | + title: "Personal" |
| 1296 | + ) |
| 1297 | + ] |
| 1298 | + ), |
| 1299 | + sharedCloudDatabase: MockCloudDatabase( |
| 1300 | + databaseScope: .shared, |
| 1301 | + storage: [] |
| 1302 | + ) |
| 1303 | + ) |
| 1304 | + """ |
| 1305 | + } |
| 1306 | + |
1264 | 1307 | try await userDatabase.userWrite { db in |
1265 | 1308 | try RemindersList.find(1).delete().execute(db) |
1266 | 1309 | } |
|
1331 | 1374 |
|
1332 | 1375 | try await syncEngine.processPendingRecordZoneChanges(scope: .shared) |
1333 | 1376 |
|
| 1377 | + assertInlineSnapshot(of: container, as: .customDump) { |
| 1378 | + """ |
| 1379 | + MockCloudContainer( |
| 1380 | + privateCloudDatabase: MockCloudDatabase( |
| 1381 | + databaseScope: .private, |
| 1382 | + storage: [] |
| 1383 | + ), |
| 1384 | + sharedCloudDatabase: MockCloudDatabase( |
| 1385 | + databaseScope: .shared, |
| 1386 | + storage: [ |
| 1387 | + [0]: CKRecord( |
| 1388 | + recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner), |
| 1389 | + recordType: "cloudkit.share", |
| 1390 | + parent: nil, |
| 1391 | + share: nil |
| 1392 | + ), |
| 1393 | + [1]: CKRecord( |
| 1394 | + recordID: CKRecord.ID(1:reminders/external.zone/external.owner), |
| 1395 | + recordType: "reminders", |
| 1396 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), |
| 1397 | + share: nil, |
| 1398 | + id: 1, |
| 1399 | + isCompleted: 0, |
| 1400 | + remindersListID: 1, |
| 1401 | + title: "Get milk" |
| 1402 | + ), |
| 1403 | + [2]: CKRecord( |
| 1404 | + recordID: CKRecord.ID(2:reminders/external.zone/external.owner), |
| 1405 | + recordType: "reminders", |
| 1406 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), |
| 1407 | + share: nil, |
| 1408 | + id: 2, |
| 1409 | + isCompleted: 0, |
| 1410 | + remindersListID: 1, |
| 1411 | + title: "Take a walk" |
| 1412 | + ), |
| 1413 | + [3]: CKRecord( |
| 1414 | + recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), |
| 1415 | + recordType: "remindersLists", |
| 1416 | + parent: nil, |
| 1417 | + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), |
| 1418 | + id: 1, |
| 1419 | + title: "Personal" |
| 1420 | + ) |
| 1421 | + ] |
| 1422 | + ) |
| 1423 | + ) |
| 1424 | + """ |
| 1425 | + } |
| 1426 | + |
1334 | 1427 | try await userDatabase.userWrite { db in |
1335 | 1428 | try RemindersList.find(1).delete().execute(db) |
1336 | 1429 | } |
|
1362 | 1455 | ), |
1363 | 1456 | sharedCloudDatabase: MockCloudDatabase( |
1364 | 1457 | databaseScope: .shared, |
1365 | | - storage: [] |
| 1458 | + storage: [ |
| 1459 | + [0]: CKRecord( |
| 1460 | + recordID: CKRecord.ID(1:reminders/external.zone/external.owner), |
| 1461 | + recordType: "reminders", |
| 1462 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), |
| 1463 | + share: nil, |
| 1464 | + id: 1, |
| 1465 | + isCompleted: 0, |
| 1466 | + remindersListID: 1, |
| 1467 | + title: "Get milk" |
| 1468 | + ), |
| 1469 | + [1]: CKRecord( |
| 1470 | + recordID: CKRecord.ID(2:reminders/external.zone/external.owner), |
| 1471 | + recordType: "reminders", |
| 1472 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), |
| 1473 | + share: nil, |
| 1474 | + id: 2, |
| 1475 | + isCompleted: 0, |
| 1476 | + remindersListID: 1, |
| 1477 | + title: "Take a walk" |
| 1478 | + ), |
| 1479 | + [2]: CKRecord( |
| 1480 | + recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), |
| 1481 | + recordType: "remindersLists", |
| 1482 | + parent: nil, |
| 1483 | + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), |
| 1484 | + id: 1, |
| 1485 | + title: "Personal" |
| 1486 | + ) |
| 1487 | + ] |
1366 | 1488 | ) |
1367 | 1489 | ) |
1368 | 1490 | """ |
|
0 commit comments