_This change should have no user impact._ The database corruption flag lives on `UserDefaults`. Currently, this flag is controlled through `SSKPreferences`, but I kinda think that's the wrong place—database corruption isn't really a user preference. This moves it into its own file, tests it, and [drops booleans in favor of an enum][0]. I think this is useful on its own, but also prepares us for an upcoming change. [0]: https://www.luu.io/posts/dont-use-booleans
33 lines
937 B
Swift
33 lines
937 B
Swift
//
|
|
// Copyright (c) 2022 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
import SignalServiceKit
|
|
|
|
class DatabaseCorruptionStateTest: XCTestCase {
|
|
private func userDefaults() -> UserDefaults {
|
|
let suiteName = UUID().uuidString
|
|
let userDefaults = UserDefaults(suiteName: suiteName)!
|
|
userDefaults.removePersistentDomain(forName: suiteName)
|
|
return userDefaults
|
|
}
|
|
|
|
func testCorruptionChanges() throws {
|
|
let defaults = userDefaults()
|
|
|
|
// Initial state
|
|
XCTAssertEqual(
|
|
DatabaseCorruptionState.databaseCorruptionStatus(userDefaults: defaults),
|
|
.notCorrupted
|
|
)
|
|
|
|
// After flagging as corrupted
|
|
DatabaseCorruptionState.flagDatabaseAsCorrupted(userDefaults: defaults)
|
|
XCTAssertEqual(
|
|
DatabaseCorruptionState.databaseCorruptionStatus(userDefaults: defaults),
|
|
.corrupted
|
|
)
|
|
}
|
|
}
|