fix(rest): 修复旧版备份恢复单次模式失效
This commit is contained in:
1 parent
9df9d439af
commit
0a734f1ab2
2 files changed
+20
-2
No files matched your search
@@ -125,8 +125,9 @@ extension AppSettings {
|
||||
assign(\.restDailyGoal, option(doc.restDailyGoal, in: Self.restDailyGoalOptions))
|
||||
if let mode = doc.restMode.flatMap(RestRunMode.init(rawValue:)) {
|
||||
assign(\.restMode, mode)
|
||||
} else {
|
||||
assign(\.restCycleEnabled, doc.restCycleEnabled)
|
||||
} else if let cycle = doc.restCycleEnabled {
|
||||
// 工作番茄和单次的兼容布尔值均为 false,需比较完整模式才能正确恢复。
|
||||
assign(\.restMode, cycle ? .cycle : .single)
|
||||
}
|
||||
assign(\.restSound, doc.restSound.flatMap(RestSound.init(rawValue:)))
|
||||
assign(\.restHUDStyle, doc.restHUDStyle.flatMap(RestHUDStyle.init(rawValue:)))
|
||||
|
||||
@@ -584,6 +584,23 @@ import Testing
|
||||
#expect(target.restHUDStyle == .hourglass)
|
||||
}
|
||||
|
||||
@Test(arguments: [false, true, nil] as [Bool?])
|
||||
func legacyRestBackupRestoresModeFromWorkday(cycle: Bool?) {
|
||||
let suite = "RestLegacyBackupTests.\(UUID())"
|
||||
let defaults = UserDefaults(suiteName: suite)!
|
||||
defer { defaults.removePersistentDomain(forName: suite) }
|
||||
let settings = AppSettings(defaults: defaults)
|
||||
settings.restMode = .workday
|
||||
var document = SettingsDocument()
|
||||
document.restCycleEnabled = cycle
|
||||
|
||||
settings.apply(document)
|
||||
|
||||
let expected: RestRunMode = cycle.map { $0 ? .cycle : .single } ?? .workday
|
||||
#expect(settings.restMode == expected)
|
||||
#expect(AppSettings(defaults: defaults).restMode == expected)
|
||||
}
|
||||
|
||||
@Test func workdayModeMigratesLegacyCycleAndRoundTripsBackup() {
|
||||
let oldSuite = "RestLegacyModeTests.\(UUID())"
|
||||
let oldDefaults = UserDefaults(suiteName: oldSuite)!
|
||||
|
||||
Reference in new issue
Block a user