@@ -427,6 +427,109 @@ class ParseObjectTests: XCTestCase { // swiftlint:disable:this type_body_length
427
427
XCTAssertThrowsError ( try score2. merge ( with: score) )
428
428
}
429
429
430
+ func testRevertObject( ) throws {
431
+ var score = GameScore ( points: 19 , name: " fire " )
432
+ score. objectId = " yolo "
433
+ var mutableScore = score. mergeable
434
+ mutableScore. points = 50
435
+ mutableScore. player = " ali "
436
+ XCTAssertNotEqual ( mutableScore, score)
437
+ try mutableScore. revertObject ( )
438
+ XCTAssertEqual ( mutableScore, score)
439
+ }
440
+
441
+ func testRevertObjectMissingOriginal( ) throws {
442
+ var score = GameScore ( points: 19 , name: " fire " )
443
+ score. objectId = " yolo "
444
+ var mutableScore = score
445
+ mutableScore. points = 50
446
+ mutableScore. player = " ali "
447
+ XCTAssertNotEqual ( mutableScore, score)
448
+ do {
449
+ try mutableScore. revertObject ( )
450
+ XCTFail ( " Should have thrown error " )
451
+ } catch {
452
+ guard let parseError = error as? ParseError else {
453
+ XCTFail ( " Should have casted " )
454
+ return
455
+ }
456
+ XCTAssertTrue ( parseError. message. contains ( " Missing original " ) )
457
+ }
458
+ }
459
+
460
+ func testRevertObjectDiffObjectId( ) throws {
461
+ var score = GameScore ( points: 19 , name: " fire " )
462
+ score. objectId = " yolo "
463
+ var mutableScore = score. mergeable
464
+ mutableScore. points = 50
465
+ mutableScore. player = " ali "
466
+ mutableScore. objectId = " nolo "
467
+ XCTAssertNotEqual ( mutableScore, score)
468
+ do {
469
+ try mutableScore. revertObject ( )
470
+ XCTFail ( " Should have thrown error " )
471
+ } catch {
472
+ guard let parseError = error as? ParseError else {
473
+ XCTFail ( " Should have casted " )
474
+ return
475
+ }
476
+ XCTAssertTrue ( parseError. message. contains ( " objectId as the original " ) )
477
+ }
478
+ }
479
+
480
+ func testRevertKeyPath( ) throws {
481
+ var score = GameScore ( points: 19 , name: " fire " )
482
+ score. objectId = " yolo "
483
+ var mutableScore = score. mergeable
484
+ mutableScore. points = 50
485
+ mutableScore. player = " ali "
486
+ XCTAssertNotEqual ( mutableScore, score)
487
+ try mutableScore. revertKeyPath ( \. player)
488
+ XCTAssertNotEqual ( mutableScore, score)
489
+ XCTAssertEqual ( mutableScore. objectId, score. objectId)
490
+ XCTAssertNotEqual ( mutableScore. points, score. points)
491
+ XCTAssertEqual ( mutableScore. player, score. player)
492
+ }
493
+
494
+ func testRevertKeyPathMissingOriginal( ) throws {
495
+ var score = GameScore ( points: 19 , name: " fire " )
496
+ score. objectId = " yolo "
497
+ var mutableScore = score
498
+ mutableScore. points = 50
499
+ mutableScore. player = " ali "
500
+ XCTAssertNotEqual ( mutableScore, score)
501
+ do {
502
+ try mutableScore. revertKeyPath ( \. player)
503
+ XCTFail ( " Should have thrown error " )
504
+ } catch {
505
+ guard let parseError = error as? ParseError else {
506
+ XCTFail ( " Should have casted " )
507
+ return
508
+ }
509
+ XCTAssertTrue ( parseError. message. contains ( " Missing original " ) )
510
+ }
511
+ }
512
+
513
+ func testRevertKeyPathDiffObjectId( ) throws {
514
+ var score = GameScore ( points: 19 , name: " fire " )
515
+ score. objectId = " yolo "
516
+ var mutableScore = score. mergeable
517
+ mutableScore. points = 50
518
+ mutableScore. player = " ali "
519
+ mutableScore. objectId = " nolo "
520
+ XCTAssertNotEqual ( mutableScore, score)
521
+ do {
522
+ try mutableScore. revertKeyPath ( \. player)
523
+ XCTFail ( " Should have thrown error " )
524
+ } catch {
525
+ guard let parseError = error as? ParseError else {
526
+ XCTFail ( " Should have casted " )
527
+ return
528
+ }
529
+ XCTAssertTrue ( parseError. message. contains ( " objectId as the original " ) )
530
+ }
531
+ }
532
+
430
533
func testFetchCommand( ) {
431
534
var score = GameScore ( points: 10 )
432
535
let className = score. className
0 commit comments