Initial commit: suixinkan_ios UIKit rewrite project.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
60
suixinkan_iosTests/StorageTests.swift
Normal file
60
suixinkan_iosTests/StorageTests.swift
Normal file
@ -0,0 +1,60 @@
|
||||
//
|
||||
// StorageTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
// Created by Codex on 2026/6/20.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan_ios
|
||||
|
||||
/// 本地缓存 Store 测试,覆盖 UserDefaults 中的偏好和账号快照。
|
||||
final class StorageTests: XCTestCase {
|
||||
/// 测试 AppPreferencesStore 能保存并读取上次登录手机号和协议状态。
|
||||
func testAppPreferencesStorePersistsLoginPreferences() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
let store = AppPreferencesStore(defaults: defaults)
|
||||
|
||||
store.saveLastLoginUsername(" 18651857230 ")
|
||||
store.savePrivacyAgreementAccepted(true)
|
||||
|
||||
XCTAssertEqual(store.loadLastLoginUsername(), "18651857230")
|
||||
XCTAssertTrue(store.loadPrivacyAgreementAccepted())
|
||||
}
|
||||
|
||||
/// 测试账号快照能保存并恢复账号资料、业务作用域和当前选择。
|
||||
func testAccountSnapshotStorePersistsAccountContextSnapshot() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
let store = AccountSnapshotStore(defaults: defaults)
|
||||
let snapshot = AccountSnapshot(
|
||||
profile: AccountProfile(
|
||||
userId: "101",
|
||||
displayName: "测试账号",
|
||||
phone: "18651857230",
|
||||
avatarURL: "https://cdn.example.com/avatar.jpg"
|
||||
),
|
||||
accountType: "store_user",
|
||||
businessUserId: 101,
|
||||
scenicScopes: [
|
||||
BusinessScope(id: 88, name: "东门景区", kind: .scenic)
|
||||
],
|
||||
storeScopes: [
|
||||
BusinessScope(id: 66, name: "东门门店", kind: .store)
|
||||
],
|
||||
currentScenicId: 88,
|
||||
currentStoreId: 66
|
||||
)
|
||||
|
||||
store.save(snapshot)
|
||||
|
||||
XCTAssertEqual(store.load(), snapshot)
|
||||
}
|
||||
|
||||
/// 创建独立 UserDefaults,避免测试污染真实 App 偏好。
|
||||
private func makeIsolatedDefaults() -> UserDefaults {
|
||||
let suiteName = "suixinkan.tests.\(UUID().uuidString)"
|
||||
let defaults = UserDefaults(suiteName: suiteName)!
|
||||
defaults.removePersistentDomain(forName: suiteName)
|
||||
return defaults
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user