Skip to content

Commit bdb1713

Browse files
committed
5976 Storage tests of WCPayCharge & nested objects
1 parent 4b21b48 commit bdb1713

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

Storage/StorageTests/CoreData/MigrationTests.swift

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -993,6 +993,70 @@ final class MigrationTests: XCTestCase {
993993
let newOrderKey = try XCTUnwrap(migratedOrder.value(forKey: "chargeID") as? String)
994994
XCTAssertEqual(newOrderKey, orderValue)
995995
}
996+
997+
func test_migrating_from_63_to_64_enables_creating_new_WCPayCharge_withCardPaymentDetails() throws {
998+
// Given
999+
let sourceContainer = try startPersistentContainer("Model 63")
1000+
let sourceContext = sourceContainer.viewContext
1001+
1002+
try sourceContext.save()
1003+
1004+
// When
1005+
let targetContainer = try migrate(sourceContainer, to: "Model 64")
1006+
1007+
// Then
1008+
let targetContext = targetContainer.viewContext
1009+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPaymentDetails"), 0)
1010+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCharge"), 0)
1011+
1012+
// Creates nested cardPresent objects
1013+
let payment = insertWCPayCardPaymentDetails(to: targetContext)
1014+
1015+
// Creates an `WCPayCharge`
1016+
let wcPayCharge = insertWCPayCharge(to: targetContext)
1017+
wcPayCharge.setValue(payment, forKey: "cardDetails")
1018+
1019+
1020+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPaymentDetails"), 1)
1021+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCharge"), 1)
1022+
XCTAssertEqual(try XCTUnwrap(targetContext.firstObject(ofType: WCPayCharge.self)), wcPayCharge)
1023+
XCTAssertEqual(wcPayCharge.value(forKey: "cardDetails") as? WCPayCardPaymentDetails, payment)
1024+
}
1025+
1026+
func test_migrating_from_63_to_64_enables_creating_new_WCPayCharge_withCardPresentPaymentDetails() throws {
1027+
// Given
1028+
let sourceContainer = try startPersistentContainer("Model 63")
1029+
let sourceContext = sourceContainer.viewContext
1030+
1031+
try sourceContext.save()
1032+
1033+
// When
1034+
let targetContainer = try migrate(sourceContainer, to: "Model 64")
1035+
1036+
// Then
1037+
let targetContext = targetContainer.viewContext
1038+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPresentReceiptDetails"), 0)
1039+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPresentPaymentDetails"), 0)
1040+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCharge"), 0)
1041+
1042+
// Creates nested cardPresent objects
1043+
let receipt = insertWCPayCardPresentReceiptDetails(to: targetContext)
1044+
let payment = insertWCPayCardPresentPaymentDetails(to: targetContext)
1045+
1046+
payment.setValue(receipt, forKey: "receipt")
1047+
1048+
// Creates an `WCPayCharge`
1049+
let wcPayCharge = insertWCPayCharge(to: targetContext)
1050+
wcPayCharge.setValue(payment, forKey: "cardPresentDetails")
1051+
1052+
1053+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPresentReceiptDetails"), 1)
1054+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCardPresentPaymentDetails"), 1)
1055+
XCTAssertEqual(try targetContext.count(entityName: "WCPayCharge"), 1)
1056+
XCTAssertEqual(try XCTUnwrap(targetContext.firstObject(ofType: WCPayCharge.self)), wcPayCharge)
1057+
XCTAssertEqual(wcPayCharge.value(forKey: "cardPresentDetails") as? WCPayCardPresentPaymentDetails, payment)
1058+
XCTAssertEqual(payment.value(forKey: "receipt") as? WCPayCardPresentReceiptDetails, receipt)
1059+
}
9961060
}
9971061

9981062
// MARK: - Persistent Store Setup and Migrations
@@ -1425,4 +1489,51 @@ private extension MigrationTests {
14251489
"siteID": 1372
14261490
])
14271491
}
1492+
1493+
@discardableResult
1494+
func insertWCPayCharge(to context: NSManagedObjectContext) -> NSManagedObject {
1495+
context.insert(entityName: "WCPayCharge", properties: [
1496+
"siteID": 1234,
1497+
"id": "ch_idhash",
1498+
"amount": 12,
1499+
"amountCaptured": 12,
1500+
"amountRefunded": 3,
1501+
"authorizationCode": nil,
1502+
"captured": true,
1503+
"created": Date(),
1504+
"currency": "usd",
1505+
"paid": true,
1506+
"paymentIntentID": nil,
1507+
"paymentMethodID": "pm_idhash",
1508+
"refunded": false,
1509+
"status": "succeeded"
1510+
])
1511+
}
1512+
1513+
@discardableResult
1514+
func insertWCPayCardPresentReceiptDetails(to context: NSManagedObjectContext) -> NSManagedObject {
1515+
context.insert(entityName: "WCPayCardPresentReceiptDetails", properties: [
1516+
"accountType": "credit",
1517+
"applicationPreferredName": "Stripe Credit",
1518+
"dedicatedFileName": "293AAABBBCCCCC2"
1519+
])
1520+
}
1521+
1522+
@discardableResult
1523+
func insertWCPayCardPresentPaymentDetails(to context: NSManagedObjectContext) -> NSManagedObject {
1524+
context.insert(entityName: "WCPayCardPresentPaymentDetails", properties: [
1525+
"brand": "amex",
1526+
"last4": "1932",
1527+
"funding": "credit"
1528+
])
1529+
}
1530+
1531+
@discardableResult
1532+
func insertWCPayCardPaymentDetails(to context: NSManagedObjectContext) -> NSManagedObject {
1533+
context.insert(entityName: "WCPayCardPaymentDetails", properties: [
1534+
"brand": "visa",
1535+
"last4": "2096",
1536+
"funding": "debit"
1537+
])
1538+
}
14281539
}

0 commit comments

Comments
 (0)