优化有线传图页设备展示,并缓存传输模式选项。
未连接状态改为「未连接相机」;设备型号映射为可读名称而非 iPhone12,1 等内部代号;边拍边传/拍后传输按账号持久化并在下次进入时恢复。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -0,0 +1,24 @@
|
||||
//
|
||||
// DeviceModelNameResolverTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
/// 设备型号解析测试。
|
||||
final class DeviceModelNameResolverTests: XCTestCase {
|
||||
/// 测试常见硬件标识符能映射为可读型号。
|
||||
func testKnownIdentifiersMapToMarketingNames() {
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPhone10,3"), "iPhone X")
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPhone10,6"), "iPhone X")
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPhone12,1"), "iPhone 11")
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPhone16,2"), "iPhone 15 Pro Max")
|
||||
}
|
||||
|
||||
/// 测试未知标识符不回退为内部代号。
|
||||
func testUnknownIdentifierUsesGenericFallback() {
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPhone99,9"), "iPhone")
|
||||
XCTAssertEqual(DeviceModelNameResolver.marketingName(forHardwareIdentifier: "iPad99,9"), "iPad")
|
||||
}
|
||||
}
|
||||
@ -296,6 +296,45 @@ final class WiredCameraTransferViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(viewModel.photos.first?.status, .uploaded)
|
||||
}
|
||||
|
||||
/// 测试切换传输模式后会按账号缓存选项。
|
||||
func testSelectTransferModePersistsOption() async {
|
||||
let account = makeTransferModeTestAccount()
|
||||
let context = WiredTransferContext(albumId: 7701, albumName: "模式缓存", phone: "", orderNumber: "")
|
||||
let viewModel = WiredCameraTransferViewModel(context: context, cameraService: MockWiredCameraService())
|
||||
let api = MockTravelAlbumAPIForWiredTransfer()
|
||||
let oss = WiredTransferMockOSSUploadService()
|
||||
|
||||
await viewModel.start(api: api, ossService: oss, scenicID: 1, accountContext: account)
|
||||
viewModel.selectTransferMode(
|
||||
WiredCameraTransferViewModel.modePostShootTransfer,
|
||||
api: api,
|
||||
ossService: oss,
|
||||
scenicID: 1
|
||||
)
|
||||
|
||||
let store = makeTransferModeTestStore(account: account)
|
||||
XCTAssertEqual(store.loadTransferModeOption(), WiredCameraTransferViewModel.modePostShootTransfer)
|
||||
}
|
||||
|
||||
/// 测试再次进入有线传图页时会恢复上次选择的传输模式。
|
||||
func testStartRestoresCachedTransferModeOption() async {
|
||||
let account = makeTransferModeTestAccount()
|
||||
let store = makeTransferModeTestStore(account: account)
|
||||
store.saveTransferModeOption(WiredCameraTransferViewModel.modePostShootTransfer)
|
||||
|
||||
let context = WiredTransferContext(albumId: 7702, albumName: "模式恢复", phone: "", orderNumber: "")
|
||||
let viewModel = WiredCameraTransferViewModel(context: context, cameraService: MockWiredCameraService())
|
||||
|
||||
await viewModel.start(
|
||||
api: MockTravelAlbumAPIForWiredTransfer(),
|
||||
ossService: WiredTransferMockOSSUploadService(),
|
||||
scenicID: 1,
|
||||
accountContext: account
|
||||
)
|
||||
|
||||
XCTAssertEqual(viewModel.transferModeOption, WiredCameraTransferViewModel.modePostShootTransfer)
|
||||
}
|
||||
|
||||
/// 测试下载完成后生成本地缩略图,并优先用于列表展示。
|
||||
func testDownloadedPhotoGeneratesThumbnailForList() async throws {
|
||||
let camera = MockWiredCameraService()
|
||||
@ -490,3 +529,18 @@ private final class WiredTransferMockOSSUploadService: OSSUploadServing {
|
||||
func uploadScenicApplicationImage(data: Data, fileName: String, scenicId: Int, onProgress: @escaping (Int) -> Void) async throws -> String { "" }
|
||||
func uploadBankCardImage(data: Data, fileName: String, scenicId: Int, onProgress: @escaping (Int) -> Void) async throws -> String { "" }
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func makeTransferModeTestAccount() -> AccountContext {
|
||||
let account = AccountContext()
|
||||
account.applyLogin(profile: AccountProfile(userId: "transfer-mode-user", displayName: "测试"))
|
||||
return account
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func makeTransferModeTestStore(account: AccountContext) -> WiredTransferPhotoStore {
|
||||
WiredTransferPhotoStore(
|
||||
accountPrefixProvider: { account.accountCachePrefix ?? "guest_" },
|
||||
userIDProvider: { account.profile?.userId ?? "" }
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user