fix: 修正账号姓名展示与资料缓存
This commit is contained in:
@ -62,6 +62,7 @@ final class AuthModelsTests: XCTestCase {
|
||||
XCTAssertEqual(response.token, "person-temp-token")
|
||||
XCTAssertEqual(response.accounts.map(\.businessUserId), [101, 201])
|
||||
XCTAssertEqual(response.accounts.map(\.subtitle), ["示例景区 · 摄影师", "示例景区 · 店长"])
|
||||
XCTAssertEqual(response.accounts.map(\.realName), ["张三", "李四"])
|
||||
}
|
||||
|
||||
func testV9AuthResponseDecodesMissingAccountListsAsEmpty() throws {
|
||||
@ -137,4 +138,39 @@ final class AuthModelsTests: XCTestCase {
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().realName, "张三")
|
||||
XCTAssertEqual(user.toAccountSwitchAccount().toSetUserRequest(), SetUserRequest(storeUserId: 201))
|
||||
}
|
||||
|
||||
func testV9AccountModelsIgnoreBackendIdentifiersAndUseRealNameFallback() throws {
|
||||
let json = """
|
||||
{
|
||||
"token": "person-temp-token",
|
||||
"scenic_users": [
|
||||
{
|
||||
"account_type": "scenic_user",
|
||||
"ss_user_id": 101,
|
||||
"username": "backend_scenic_account",
|
||||
"user_name": "backend_scenic_unique_id",
|
||||
"real_name": "景区真实姓名"
|
||||
}
|
||||
],
|
||||
"store_users": [
|
||||
{
|
||||
"account_type": "store_user",
|
||||
"store_user_id": 201,
|
||||
"username": "backend_store_account",
|
||||
"user_name": "backend_store_unique_id",
|
||||
"real_name": "门店真实姓名"
|
||||
}
|
||||
]
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
|
||||
let response = try JSONDecoder().decode(V9AuthResponse.self, from: json)
|
||||
|
||||
XCTAssertEqual(response.scenicUsers.first?.realName, "景区真实姓名")
|
||||
XCTAssertEqual(response.scenicUsers.first?.displayName, "景区真实姓名")
|
||||
XCTAssertEqual(response.scenicUsers.first?.toAccountSwitchAccount().title, "景区真实姓名")
|
||||
XCTAssertEqual(response.storeUsers.first?.realName, "门店真实姓名")
|
||||
XCTAssertEqual(response.storeUsers.first?.displayName, "门店真实姓名")
|
||||
XCTAssertEqual(response.storeUsers.first?.toAccountSwitchAccount().title, "门店真实姓名")
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,8 +99,9 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
XCTAssertTrue(viewModel.isVoiceBroadcastOpen)
|
||||
}
|
||||
|
||||
func testNalatiAccountInfoUsesLoggedInPhotographerAndAllPermissionStores() {
|
||||
appStore.session.userName = "摄影师小王"
|
||||
func testNalatiAccountInfoUsesPhotographerRealNameAndAllPermissionStores() {
|
||||
appStore.session.userName = "摄影师昵称"
|
||||
appStore.session.realName = "摄影师真实姓名"
|
||||
appStore.permissions.saveRolePermissionList([
|
||||
RolePermissionResponse(
|
||||
role: RoleInfo(id: 41, name: "摄影师", roleCode: "photographer"),
|
||||
@ -113,10 +114,19 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
|
||||
let viewModel = PaymentCollectionDetailsViewModel(appStore: appStore)
|
||||
|
||||
XCTAssertEqual(viewModel.displayPhotographerName, "摄影师小王")
|
||||
XCTAssertEqual(viewModel.displayPhotographerName, "摄影师真实姓名")
|
||||
XCTAssertEqual(viewModel.displayStoreNames, "空中草原店、河谷草原店")
|
||||
}
|
||||
|
||||
func testPhotographerNameDoesNotFallBackToNicknameWhenRealNameMissing() {
|
||||
appStore.session.userName = "摄影师昵称"
|
||||
appStore.session.realName = " "
|
||||
|
||||
let viewModel = PaymentCollectionDetailsViewModel(appStore: appStore)
|
||||
|
||||
XCTAssertEqual(viewModel.displayPhotographerName, "-")
|
||||
}
|
||||
|
||||
func testLoadPayCodeClearsQRWhenScenicMissing() async {
|
||||
appStore.session.currentScenicId = 0
|
||||
let session = MockURLSession(responses: [])
|
||||
|
||||
@ -55,11 +55,12 @@ final class PaymentModelsTests: XCTestCase {
|
||||
XCTAssertFalse(PayPageBrandingPolicy.isNalati(scenicId: 0))
|
||||
}
|
||||
|
||||
func testPaymentAccountDisplayFormatterUsesCurrentPhotographerAndAllUniqueStores() {
|
||||
func testPaymentAccountDisplayFormatterUsesRealNameAndAllUniqueStores() {
|
||||
XCTAssertEqual(
|
||||
PaymentAccountDisplayFormatter.photographerName(userName: " 当前摄影师 ", realName: "实名"),
|
||||
"当前摄影师"
|
||||
PaymentAccountDisplayFormatter.photographerName(realName: " 摄影师真实姓名 "),
|
||||
"摄影师真实姓名"
|
||||
)
|
||||
XCTAssertEqual(PaymentAccountDisplayFormatter.photographerName(realName: " "), "-")
|
||||
XCTAssertEqual(
|
||||
PaymentAccountDisplayFormatter.storeNames(["一号店", " 二号店 ", "一号店", ""]),
|
||||
"一号店、二号店"
|
||||
|
||||
@ -26,6 +26,22 @@ final class ProfileViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(viewModel.displayNickname, "未设置昵称")
|
||||
}
|
||||
|
||||
func testColdStartBasicInfoUsesPersistedSessionCache() {
|
||||
AppStore.shared.session.userName = "缓存昵称"
|
||||
AppStore.shared.session.realName = "缓存真实姓名"
|
||||
AppStore.shared.session.phone = "186****7230"
|
||||
AppStore.shared.session.avatar = "https://cdn.example.com/cached-avatar.jpg"
|
||||
|
||||
let viewModel = ProfileViewModel()
|
||||
|
||||
XCTAssertTrue(viewModel.hasCachedBasicInfo)
|
||||
XCTAssertEqual(viewModel.displayNickname, "缓存昵称")
|
||||
XCTAssertEqual(viewModel.displayRealName, "缓存真实姓名")
|
||||
XCTAssertEqual(viewModel.displayPhone, "186****7230")
|
||||
XCTAssertEqual(viewModel.displayAvatarURL, "https://cdn.example.com/cached-avatar.jpg")
|
||||
XCTAssertEqual(viewModel.displayUID, "profile-user")
|
||||
}
|
||||
|
||||
func testShowPhotographerFieldsWhenRoleCodeIsPhotographer() {
|
||||
AppStore.shared.session.roleCode = AppRoleCode.photographer.rawValue
|
||||
let viewModel = ProfileViewModel()
|
||||
|
||||
Reference in New Issue
Block a user