AppDefaultsMigratorTests.swift (1147B)
1 import Foundation 2 import Testing 3 4 @testable import Crossmate 5 6 @Suite("App defaults migrator") 7 struct AppDefaultsMigratorTests { 8 @Test("Renames the legacy NYT puzzle source") 9 func renamesLegacyNYTPuzzleSource() throws { 10 let defaults = try makeDefaults() 11 defaults.set("nyt", forKey: "lastPuzzleSource") 12 13 AppDefaultsMigrator.run(defaults: defaults) 14 15 #expect(defaults.string(forKey: "lastPuzzleSource") == PuzzleSource.external.rawValue) 16 } 17 18 @Test("Preserves another puzzle source") 19 func preservesAnotherPuzzleSource() throws { 20 let defaults = try makeDefaults() 21 defaults.set(PuzzleSource.imported.rawValue, forKey: "lastPuzzleSource") 22 23 AppDefaultsMigrator.run(defaults: defaults) 24 25 #expect(defaults.string(forKey: "lastPuzzleSource") == PuzzleSource.imported.rawValue) 26 } 27 28 private func makeDefaults() throws -> UserDefaults { 29 let suiteName = "AppDefaultsMigratorTests.\(UUID().uuidString)" 30 let defaults = try #require(UserDefaults(suiteName: suiteName)) 31 defaults.removePersistentDomain(forName: suiteName) 32 return defaults 33 } 34 }