UserPreference now can have published defaultValue

better approach

improved and added tests
This commit is contained in:
Mauro Romito
2025-03-20 20:35:11 +01:00
committed by Mauro
parent d9196b2fa1
commit edcc5d17c8
5 changed files with 75 additions and 46 deletions

View File

@@ -12,6 +12,7 @@ import XCTest
final class UserPreferenceTests: XCTestCase {
override func setUpWithError() throws {
UserDefaults.testDefaults.removeVolatileDomain(forName: .userDefaultsSuiteName)
UserDefaults.testDefaults.removePersistentDomain(forName: .userDefaultsSuiteName)
}
func testStorePlistValue() throws {
@@ -120,6 +121,29 @@ final class UserPreferenceTests: XCTestCase {
XCTAssertNil(value.codable)
XCTAssertNil(UserDefaults.testDefaults.data(forKey: .key3))
}
func testLocalOverRemoteValue() {
@UserPreference(key: "testKey", defaultValue: "", storageType: .userDefaults(.testDefaults)) var preference
XCTAssertEqual(preference, "")
_preference.remoteValue = "remote"
XCTAssertEqual(preference, "remote")
preference = "local"
XCTAssertEqual(preference, "local")
}
func testRemoteOverLocalValue() {
@UserPreference(key: "testKey", defaultValue: "", storageType: .userDefaults(.testDefaults), mode: .remoteOverLocal) var preference
XCTAssertEqual(preference, "")
_preference.remoteValue = "remote"
XCTAssertEqual(preference, "remote")
preference = "local"
XCTAssertEqual(preference, "remote")
XCTAssertTrue(_preference.isLockedToRemote)
}
}
private struct TestPreferences {