Skip to content

Commit fcb07a8

Browse files
committed
Add migration test
1 parent bea7aa6 commit fcb07a8

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

Storage/Storage/Model/MIGRATIONS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
This file documents changes in the WCiOS Storage data model. Please explain any changes to the data model as well as any custom migrations.
44

5+
## Model 120 (Release 21.8.0.0)
6+
- @itsmeichigo 2025-02-17
7+
- Added `hasSSOEnabled` attribute to `Site` entity.
8+
59
## Model 119 (Release 21.3.0.0)
610
- @rachelmcr 2024-12-16
711
- Added `WooShippingPackagesResponse` entity.

Storage/StorageTests/CoreData/MigrationTests.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3260,6 +3260,36 @@ final class MigrationTests: XCTestCase {
32603260
XCTAssertEqual(predefinedOption.value(forKey: "predefinedPackages") as? NSSet, NSSet(array: [predefinedPackage]))
32613261
XCTAssertEqual(savedPredefinedPackage.value(forKey: "package") as? WooShippingPredefinedPackage, predefinedPackage)
32623262
}
3263+
3264+
func test_migrating_from_119_to_120_adds_new_hasSSOEnabled_attribute_to_site() throws {
3265+
// Given
3266+
let sourceContainer = try startPersistentContainer("Model 119")
3267+
let sourceContext = sourceContainer.viewContext
3268+
3269+
let site = insertSite(to: sourceContext)
3270+
try sourceContext.save()
3271+
3272+
XCTAssertNil(site.entity.attributesByName["hasSSOEnabled"], "Precondition. Attribute does not exist.")
3273+
3274+
// When
3275+
let targetContainer = try migrate(sourceContainer, to: "Model 120")
3276+
3277+
// Then
3278+
let targetContext = targetContainer.viewContext
3279+
let migratedSite = try XCTUnwrap(targetContext.first(entityName: "Site"))
3280+
3281+
// `hasSSOEnabled` should be present in `migratedSite`
3282+
XCTAssertNotNil(migratedSite.entity.attributesByName["hasSSOEnabled"])
3283+
3284+
let savedHasSSOEnabled = try XCTUnwrap(migratedSite.value(forKey: "hasSSOEnabled") as? Bool)
3285+
XCTAssertFalse(savedHasSSOEnabled) // default value
3286+
3287+
migratedSite.setValue(true, forKey: "hasSSOEnabled")
3288+
try targetContext.save()
3289+
3290+
let updatedHasSSOEnabled = try XCTUnwrap(migratedSite.value(forKey: "hasSSOEnabled") as? Bool)
3291+
XCTAssertTrue(updatedHasSSOEnabled)
3292+
}
32633293
}
32643294

32653295
// MARK: - Persistent Store Setup and Migrations

0 commit comments

Comments
 (0)