Skip to content

Commit 02978be

Browse files
authored
Merge pull request #7807 from woocommerce/fix/update-cd-model70-docs-tests
Add docs and unit test for Model 70 CD migration
2 parents 72856ec + 05d86da commit 02978be

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

Storage/Storage/Model/MIGRATIONS.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This file documents changes in the WCiOS Storage data model. Please explain any
66
- @jaclync 2022-09-14
77
- Added `filterKey` attribute to `ProductSearchResults` entity.
88

9-
## Model 71 (Release 9.6.0.0)
9+
## Model 72 (Release 9.6.0.0)
1010
- @joshheald 2022-08-19
1111
- Added `instructions` attribute to `PaymentGateway` entity.
1212

@@ -15,6 +15,10 @@ This file documents changes in the WCiOS Storage data model. Please explain any
1515
- Added `OrderMetaData` entity.
1616
- Added `customFields` to-many relationship from `Order` to `OrderMetaData`.
1717

18+
## Model 70 (Release 9.5.0.0)
19+
- @toupper 2022-06-22
20+
- Update `OrderItemRefund` entity to include the `refundedItemID` property.
21+
1822
## Model 69 (Release 9.4.0.0)
1923
- @ecarrion 2022-06-08
2024
- Update `Order` entity to include the `needsProcessing`, `needsPayment`, and `isEditable` properties.

Storage/StorageTests/CoreData/MigrationTests.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,6 +1203,27 @@ final class MigrationTests: XCTestCase {
12031203
XCTAssertEqual(migratedOrder.value(forKey: "needsProcessing") as? Bool, false)
12041204
}
12051205

1206+
func test_migrating_from_69_to_70_adds_refundedItemID_property_to_OrderItemRefund() throws {
1207+
// Given
1208+
let sourceContainer = try startPersistentContainer("Model 69")
1209+
let sourceContext = sourceContainer.viewContext
1210+
1211+
let orderItemRefund = insertOrderItemRefund(to: sourceContext)
1212+
1213+
// Confidence check:
1214+
// The `itemID` property already exists on Model 69, but the `refundedItemID` does not
1215+
XCTAssertNotNil(orderItemRefund.entity.attributesByName["itemID"])
1216+
XCTAssertNil(orderItemRefund.entity.attributesByName["refundedItemID"])
1217+
1218+
// When
1219+
let targetContainer = try migrate(sourceContainer, to: "Model 70")
1220+
let targetContext = targetContainer.viewContext
1221+
let migratedOrderItemRefund = insertOrderItemRefund(to: targetContext)
1222+
1223+
// Confirms the `refundedItemID` property now exists on Model 70
1224+
XCTAssertNotNil(migratedOrderItemRefund.entity.attributesByName["refundedItemID"])
1225+
}
1226+
12061227
func test_migrating_from_70_to_71_adds_custom_fields_property_to_order() throws {
12071228
// Given
12081229
let sourceContainer = try startPersistentContainer("Model 70")
@@ -1527,6 +1548,13 @@ private extension MigrationTests {
15271548
])
15281549
}
15291550

1551+
@discardableResult
1552+
func insertOrderItemRefund(to context: NSManagedObjectContext) -> NSManagedObject {
1553+
context.insert(entityName: "OrderItemRefund", properties: [
1554+
"itemID": 123
1555+
])
1556+
}
1557+
15301558
@discardableResult
15311559
func insertProduct(to context: NSManagedObjectContext, forModel modelVersion: Int) -> NSManagedObject {
15321560
let product = context.insert(entityName: "Product", properties: [

0 commit comments

Comments
 (0)