修复账号切换后「我的」页当前账号展示错误,并统一举报摄影师首页 URI。
切换账号时以用户选中账号为准写入展示标题与业务作用域,避免沿用旧门店名称;同时将首页举报摄影师入口 URI 对齐为 report_photographer。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -81,6 +81,69 @@ final class AuthModelsTests: XCTestCase {
|
||||
XCTAssertEqual(response.primaryProfile?.displayName, "示例门店")
|
||||
}
|
||||
|
||||
/// 测试切换门店账号时会优先使用 isCurrent 标记校准景区和门店作用域。
|
||||
func testV9AuthResponsePreferredScopeSelectionUsesCurrentStoreAccount() throws {
|
||||
let scenicJSON = """
|
||||
{
|
||||
"account_type": "scenic_user",
|
||||
"id": 101,
|
||||
"user_id": 101,
|
||||
"scenic_user_id": 101,
|
||||
"ss_user_id": 101,
|
||||
"username": "scenic_admin",
|
||||
"real_name": "张三",
|
||||
"nickname": "张三",
|
||||
"phone": "13800138000",
|
||||
"scenic_id": 1,
|
||||
"scenic_name": "旧景区",
|
||||
"is_current": false
|
||||
}
|
||||
"""
|
||||
let storeJSON = """
|
||||
{
|
||||
"account_type": "store_user",
|
||||
"id": 201,
|
||||
"user_id": 201,
|
||||
"store_user_id": 201,
|
||||
"username": "store_admin",
|
||||
"user_name": "store_admin",
|
||||
"real_name": "李四",
|
||||
"phone": "13800138000",
|
||||
"avatar": "",
|
||||
"scenic_id": 2,
|
||||
"scenic_name": "新景区",
|
||||
"store_id": 20,
|
||||
"store_name": "新门店",
|
||||
"is_current": true
|
||||
}
|
||||
"""
|
||||
let scenicUser = try JSONDecoder().decode(V9ScenicUser.self, from: Data(scenicJSON.utf8))
|
||||
let storeUser = try JSONDecoder().decode(V9StoreUser.self, from: Data(storeJSON.utf8))
|
||||
let response = V9AuthResponse(token: "token", scenicUsers: [scenicUser], storeUsers: [storeUser])
|
||||
|
||||
XCTAssertEqual(response.currentAccountIdentity?.accountType, V9StoreUser.accountTypeValue)
|
||||
XCTAssertEqual(response.currentAccountIdentity?.businessUserId, 201)
|
||||
XCTAssertEqual(response.preferredScopeSelection.scenicId, 2)
|
||||
XCTAssertEqual(response.preferredScopeSelection.storeId, 20)
|
||||
|
||||
let context = AccountContext()
|
||||
context.replaceScopes(
|
||||
scenic: [BusinessScope(id: 1, name: "旧景区", kind: .scenic)],
|
||||
stores: [],
|
||||
currentScenicId: 1,
|
||||
currentStoreId: nil
|
||||
)
|
||||
context.replaceScopes(
|
||||
scenic: response.scenicScopes,
|
||||
stores: response.storeScopes,
|
||||
currentScenicId: response.preferredScopeSelection.scenicId,
|
||||
currentStoreId: response.preferredScopeSelection.storeId
|
||||
)
|
||||
|
||||
XCTAssertEqual(context.currentScenic?.id, 2)
|
||||
XCTAssertEqual(context.currentStore?.id, 20)
|
||||
}
|
||||
|
||||
/// 测试 LoginRequest 会填充后端要求的默认字段。
|
||||
func testLoginRequestEncodesExpectedDefaults() throws {
|
||||
let request = LoginRequest(username: "18651857230", password: "secret123")
|
||||
|
||||
Reference in New Issue
Block a user