85 lines
2.6 KiB
Swift
85 lines
2.6 KiB
Swift
//
|
|
// SettingsServiceTests.swift
|
|
// AutoCatCoreTests
|
|
//
|
|
// Created by Selim Mustafaev on 17.08.2024.
|
|
// Copyright © 2024 Selim Mustafaev. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Testing
|
|
@testable import AutoCatCore
|
|
|
|
extension Encodable {
|
|
|
|
var data: Data? {
|
|
let encoder = JSONEncoder()
|
|
return try? encoder.encode(self)
|
|
}
|
|
}
|
|
|
|
struct SettingsServiceTests {
|
|
|
|
let testRegion = "xxx"
|
|
let testEmail = "test@test.test"
|
|
let testToken = "testToken"
|
|
let testUser: User
|
|
let dbName = "testUserDefaults"
|
|
|
|
let defaults: UserDefaults
|
|
var settingsService: SettingsService
|
|
|
|
init() {
|
|
self.testUser = User(email: testEmail, token: testToken)
|
|
self.defaults = UserDefaults(suiteName: dbName)!
|
|
self.defaults.removePersistentDomain(forName: dbName)
|
|
self.settingsService = SettingsService(defaults: defaults)
|
|
}
|
|
|
|
@Test("Creating default user")
|
|
mutating func defaultUser() async throws {
|
|
|
|
#expect(settingsService.user.email == "")
|
|
#expect(settingsService.user.token == "")
|
|
}
|
|
|
|
@Test("Loading saved user")
|
|
func loadSavedUser() async throws {
|
|
|
|
let data = try #require(testUser.data)
|
|
|
|
defaults.setPersistentDomain(["user": data], forName: dbName)
|
|
let service = SettingsService(defaults: defaults)
|
|
|
|
#expect(service.user.email == testEmail)
|
|
#expect(service.user.token == testToken)
|
|
}
|
|
|
|
@Test("Save user")
|
|
func saveUser() async throws {
|
|
|
|
settingsService.user = testUser
|
|
|
|
let userData = defaults.data(forKey: "user")
|
|
#expect(userData == testUser.data)
|
|
}
|
|
|
|
@Test("Save settings", .serialized, arguments: [true, false])
|
|
func saveSettings(value: Bool) {
|
|
|
|
settingsService.recognizeAlternativeOrder = value
|
|
settingsService.recognizeShortenedNumbers = value
|
|
settingsService.defaultRegion = testRegion
|
|
settingsService.recordBeep = value
|
|
settingsService.showDebugInfo = value
|
|
settingsService.useTestBackend = value
|
|
|
|
#expect(defaults.bool(forKey: SettingsKey.recognizeAlternativeOrder.rawValue) == value)
|
|
#expect(defaults.bool(forKey: SettingsKey.recognizeShortenedNumbers.rawValue) == value)
|
|
#expect(defaults.string(forKey: SettingsKey.defaultRegion.rawValue) == testRegion)
|
|
#expect(defaults.bool(forKey: SettingsKey.recordBeep.rawValue) == value)
|
|
#expect(defaults.bool(forKey: SettingsKey.showDebugInfo.rawValue) == value)
|
|
#expect(defaults.bool(forKey: SettingsKey.useTestBackend.rawValue) == value)
|
|
}
|
|
}
|