Signal-iOS/SignalServiceKit/tests/Storage/Database/DatabaseCorruptionStateTest.swift
Evan Hahn 4da042c1d5
Clean up database corruption storage code
_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
2022-09-23 18:19:02 +00:00

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
)
}
}