|
349 | 349 | } |
350 | 350 |
|
351 | 351 | @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) |
352 | | - @Test func serverRecordEditedAfterClientButProcessedBeforeClient() async throws { |
| 352 | + @Test func serverRecordEditedAfterClientAndProcessedBeforeClient() async throws { |
353 | 353 | try await userDatabase.userWrite { db in |
354 | 354 | try db.seed { |
355 | 355 | RemindersList(id: 1, title: "") |
|
427 | 427 | } |
428 | 428 |
|
429 | 429 | @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) |
430 | | - @Test func serverRecordEditedAndProcessedBeforeClient() async throws { |
| 430 | + @Test func serverRecordEditedAfterClientAndProcessedAfterClient() async throws { |
| 431 | + try await userDatabase.userWrite { db in |
| 432 | + try db.seed { |
| 433 | + RemindersList(id: 1, title: "") |
| 434 | + Reminder(id: 1, title: "", remindersListID: 1) |
| 435 | + } |
| 436 | + } |
| 437 | + try await syncEngine.processPendingRecordZoneChanges(scope: .private) |
| 438 | + |
| 439 | + try await withDependencies { |
| 440 | + $0.currentTime.now = 30 |
| 441 | + } operation: { |
| 442 | + try await userDatabase.userWrite { db in |
| 443 | + try Reminder.find(1).update { $0.title = "Get milk" }.execute(db) |
| 444 | + } |
| 445 | + } |
| 446 | + |
| 447 | + let record = try syncEngine.private.database.record(for: Reminder.recordID(for: 1)) |
| 448 | + record.setValue("Buy milk", forKey: "title", at: 60) |
| 449 | + let modificationCallback = try { |
| 450 | + try syncEngine.modifyRecords(scope: .private, saving: [record]) |
| 451 | + }() |
| 452 | + |
| 453 | + try await syncEngine.processPendingRecordZoneChanges(scope: .private) |
| 454 | + await modificationCallback.notify() |
| 455 | + try await syncEngine.processPendingRecordZoneChanges(scope: .private) |
| 456 | + |
| 457 | + assertQuery(Reminder.all, database: userDatabase.database) { |
| 458 | + """ |
| 459 | + ┌───────────────────────┐ |
| 460 | + │ Reminder( │ |
| 461 | + │ id: 1, │ |
| 462 | + │ dueDate: nil, │ |
| 463 | + │ isCompleted: false, │ |
| 464 | + │ priority: nil, │ |
| 465 | + │ title: "Buy milk", │ |
| 466 | + │ remindersListID: 1 │ |
| 467 | + │ ) │ |
| 468 | + └───────────────────────┘ |
| 469 | + """ |
| 470 | + } |
| 471 | + assertInlineSnapshot(of: container.privateCloudDatabase, as: .customDump) { |
| 472 | + """ |
| 473 | + MockCloudDatabase( |
| 474 | + databaseScope: .private, |
| 475 | + storage: [ |
| 476 | + [0]: CKRecord( |
| 477 | + recordID: CKRecord.ID(1:reminders/zone/__defaultOwner__), |
| 478 | + recordType: "reminders", |
| 479 | + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__)), |
| 480 | + share: nil, |
| 481 | + id: 1, |
| 482 | + id🗓️: 0, |
| 483 | + isCompleted: 0, |
| 484 | + isCompleted🗓️: 0, |
| 485 | + remindersListID: 1, |
| 486 | + remindersListID🗓️: 0, |
| 487 | + title: "Buy milk", |
| 488 | + title🗓️: 60, |
| 489 | + 🗓️: 60 |
| 490 | + ), |
| 491 | + [1]: CKRecord( |
| 492 | + recordID: CKRecord.ID(1:remindersLists/zone/__defaultOwner__), |
| 493 | + recordType: "remindersLists", |
| 494 | + parent: nil, |
| 495 | + share: nil, |
| 496 | + id: 1, |
| 497 | + id🗓️: 0, |
| 498 | + title: "", |
| 499 | + title🗓️: 0, |
| 500 | + 🗓️: 0 |
| 501 | + ) |
| 502 | + ] |
| 503 | + ) |
| 504 | + """ |
| 505 | + } |
| 506 | + } |
| 507 | + |
| 508 | + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) |
| 509 | + @Test func serverRecordEditedBeforeClientAndProcessedBeforeClient() async throws { |
431 | 510 | try await userDatabase.userWrite { db in |
432 | 511 | try db.seed { |
433 | 512 | RemindersList(id: 1, title: "") |
|
490 | 569 | } |
491 | 570 |
|
492 | 571 | @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) |
493 | | - @Test func serverRecordEditedBeforeClientButProcessedAfterClient() async throws { |
| 572 | + @Test func serverRecordEditedBeforeClientAndProcessedAfterClient() async throws { |
494 | 573 | try await userDatabase.userWrite { db in |
495 | 574 | try db.seed { |
496 | 575 | RemindersList(id: 1, title: "") |
|
0 commit comments