Summary: - Sources: update Models, Services - Tests: update tests for KeychainHelperTests.swift, LocalDataTests.swift Stats: - 4 files changed, 20 insertions(+), 24 deletions(-)
86 lines
2.7 KiB
Swift
86 lines
2.7 KiB
Swift
import Foundation
|
|
import Testing
|
|
@testable import LocalData
|
|
|
|
private struct TestUserDefaultsKey: StorageKey {
|
|
typealias Value = String
|
|
|
|
let name: String
|
|
let domain: StorageDomain
|
|
let security: SecurityPolicy = .none
|
|
let serializer: Serializer<String> = .json
|
|
let owner: String = "LocalDataTests"
|
|
let description: String = "Test-only key for user defaults round-trip."
|
|
let availability: PlatformAvailability = .all
|
|
let syncPolicy: SyncPolicy = .never
|
|
|
|
init(name: String, suiteName: String) {
|
|
self.name = name
|
|
self.domain = .userDefaults(suite: suiteName)
|
|
}
|
|
}
|
|
|
|
private struct TestFileKey: StorageKey {
|
|
typealias Value = String
|
|
|
|
let name: String
|
|
let domain: StorageDomain
|
|
let security: SecurityPolicy = .none
|
|
let serializer: Serializer<String> = .json
|
|
let owner: String = "LocalDataTests"
|
|
let description: String = "Test-only key for file system round-trip."
|
|
let availability: PlatformAvailability = .all
|
|
let syncPolicy: SyncPolicy = .never
|
|
|
|
init(name: String, directory: URL) {
|
|
self.name = name
|
|
self.domain = .fileSystem(directory: .custom(directory))
|
|
}
|
|
}
|
|
|
|
struct LocalDataTests {
|
|
@Test func userDefaultsRoundTrip() async throws {
|
|
let suiteName = "LocalDataTests.\(UUID().uuidString)"
|
|
defer {
|
|
if let defaults = UserDefaults(suiteName: suiteName) {
|
|
defaults.removePersistentDomain(forName: suiteName)
|
|
}
|
|
}
|
|
|
|
let key = TestUserDefaultsKey(name: "test.string", suiteName: suiteName)
|
|
let storedValue = "1.0.0"
|
|
|
|
try await StorageRouter.shared.set(storedValue, for: key)
|
|
let fetched = try await StorageRouter.shared.get(key)
|
|
|
|
#expect(fetched == storedValue)
|
|
|
|
try await StorageRouter.shared.remove(key)
|
|
await #expect(throws: StorageError.notFound) {
|
|
_ = try await StorageRouter.shared.get(key)
|
|
}
|
|
}
|
|
|
|
@Test func fileSystemRoundTrip() async throws {
|
|
let tempDirectory = FileManager.default.temporaryDirectory
|
|
.appending(path: "LocalDataTests")
|
|
.appending(path: UUID().uuidString)
|
|
defer {
|
|
try? FileManager.default.removeItem(at: tempDirectory)
|
|
}
|
|
|
|
let key = TestFileKey(name: "test.json", directory: tempDirectory)
|
|
let storedValue = "payload"
|
|
|
|
try await StorageRouter.shared.set(storedValue, for: key)
|
|
let fetched = try await StorageRouter.shared.get(key)
|
|
|
|
#expect(fetched == storedValue)
|
|
|
|
try await StorageRouter.shared.remove(key)
|
|
await #expect(throws: StorageError.notFound) {
|
|
_ = try await StorageRouter.shared.get(key)
|
|
}
|
|
}
|
|
}
|