crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

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 }