完善账号切换展示、首页菜单图标与有线传输设置 chip。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -53,8 +53,9 @@ final class AccountSwitchViewModelTests: XCTestCase {
|
||||
accountType: V9ScenicUser.accountTypeValue,
|
||||
businessUserId: 0,
|
||||
title: "景区A",
|
||||
subtitle: "张三",
|
||||
subtitle: "角色A",
|
||||
phone: "13800138000",
|
||||
realName: "张三",
|
||||
avatar: "",
|
||||
scenicName: "景区A",
|
||||
storeId: nil,
|
||||
|
||||
@ -29,6 +29,7 @@ final class AuthModelsTests: XCTestCase {
|
||||
"phone": "13800138000",
|
||||
"scenic_id": 10,
|
||||
"scenic_name": "示例景区",
|
||||
"role_name": "摄影师",
|
||||
"is_current": false
|
||||
}
|
||||
],
|
||||
@ -47,6 +48,7 @@ final class AuthModelsTests: XCTestCase {
|
||||
"scenic_name": "示例景区",
|
||||
"store_id": 20,
|
||||
"store_name": "示例门店",
|
||||
"role_name": "店长",
|
||||
"is_current": false
|
||||
}
|
||||
]
|
||||
@ -59,7 +61,7 @@ final class AuthModelsTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(response.token, "person-temp-token")
|
||||
XCTAssertEqual(response.accounts.map(\.businessUserId), [101, 201])
|
||||
XCTAssertEqual(response.accounts.map(\.subtitle), ["scenic_operator", "store_admin"])
|
||||
XCTAssertEqual(response.accounts.map(\.subtitle), ["示例景区 · 摄影师", "示例景区 · 店长"])
|
||||
}
|
||||
|
||||
func testV9AuthResponseDecodesMissingAccountListsAsEmpty() throws {
|
||||
@ -96,13 +98,15 @@ final class AuthModelsTests: XCTestCase {
|
||||
"phone": "13800138000",
|
||||
"scenic_id": 10,
|
||||
"scenic_name": "示例景区",
|
||||
"role_name": "摄影师",
|
||||
"is_current": false
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
let user = try JSONDecoder().decode(V9ScenicUser.self, from: json)
|
||||
|
||||
XCTAssertEqual(user.businessUserId, 101)
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().subtitle, "scenic_operator")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().subtitle, "示例景区 · 摄影师")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().realName, "张三")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().toSetUserRequest(), SetUserRequest(ssUserId: 101))
|
||||
}
|
||||
|
||||
@ -122,13 +126,15 @@ final class AuthModelsTests: XCTestCase {
|
||||
"scenic_name": "示例景区",
|
||||
"store_id": 20,
|
||||
"store_name": "示例门店",
|
||||
"role_name": "店长",
|
||||
"is_current": false
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
let user = try JSONDecoder().decode(V9StoreUser.self, from: json)
|
||||
|
||||
XCTAssertEqual(user.businessUserId, 201)
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().subtitle, "store_admin")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().subtitle, "示例景区 · 店长")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().realName, "张三")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().toSetUserRequest(), SetUserRequest(storeUserId: 201))
|
||||
}
|
||||
}
|
||||
|
||||
44
suixinkanTests/HomeMenuIconFactoryTests.swift
Normal file
44
suixinkanTests/HomeMenuIconFactoryTests.swift
Normal file
@ -0,0 +1,44 @@
|
||||
//
|
||||
// HomeMenuIconFactoryTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
/// 首页菜单图标加载测试。
|
||||
final class HomeMenuIconFactoryTests: XCTestCase {
|
||||
|
||||
func testAssetIconTakesPrecedence() {
|
||||
let image = HomeMenuIconFactory.image(named: "home_menu_space")
|
||||
|
||||
XCTAssertNotNil(image)
|
||||
XCTAssertNil(UIImage(systemName: "home_menu_space"))
|
||||
}
|
||||
|
||||
func testSystemSymbolMatchesSharedConfiguration() {
|
||||
let expected = UIImage(
|
||||
systemName: "ellipsis",
|
||||
withConfiguration: HomeMenuIconFactory.symbolConfiguration
|
||||
)
|
||||
let actual = HomeMenuIconFactory.image(named: "ellipsis")
|
||||
|
||||
XCTAssertNotNil(actual)
|
||||
XCTAssertEqual(actual?.size, expected?.size)
|
||||
}
|
||||
|
||||
func testSystemSymbolDiffersFromUnconfiguredDefault() {
|
||||
let configured = HomeMenuIconFactory.image(named: "ellipsis")
|
||||
let plain = UIImage(systemName: "ellipsis")
|
||||
|
||||
XCTAssertNotNil(configured)
|
||||
XCTAssertNotNil(plain)
|
||||
XCTAssertNotEqual(configured?.size, plain?.size)
|
||||
}
|
||||
|
||||
func testComplexSystemSymbolResolves() {
|
||||
XCTAssertNotNil(HomeMenuIconFactory.image(named: "dot.radiowaves.left.and.right"))
|
||||
XCTAssertNotNil(HomeMenuIconFactory.image(named: "rectangle.stack.badge.plus"))
|
||||
}
|
||||
}
|
||||
29
suixinkanTests/WiredTransferSettingChipButtonTests.swift
Normal file
29
suixinkanTests/WiredTransferSettingChipButtonTests.swift
Normal file
@ -0,0 +1,29 @@
|
||||
//
|
||||
// WiredTransferSettingChipButtonTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
final class WiredTransferSettingChipButtonTests: XCTestCase {
|
||||
@MainActor
|
||||
func testApplyTitleUpdatesAccessibilityLabel() {
|
||||
let button = WiredTransferSettingChipButton()
|
||||
button.apply(title: "AI修图")
|
||||
XCTAssertEqual(button.titleText, "AI修图")
|
||||
XCTAssertEqual(button.accessibilityLabel, "AI修图")
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func testShowsChevronDefaultsToFalse() {
|
||||
let button = WiredTransferSettingChipButton()
|
||||
XCTAssertFalse(button.showsChevron)
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func testInitWithShowsChevronTrue() {
|
||||
let button = WiredTransferSettingChipButton(showsChevron: true)
|
||||
XCTAssertTrue(button.showsChevron)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user