feat: 新增用户信息获取功能及相关模型

- 在APIEndpoints.swift中新增getUserInfo端点以支持获取用户信息。
- 在APIModels.swift中实现获取用户信息请求和响应模型,处理用户信息的请求与解析。
- 在UserInfoManager中新增方法以从服务器获取用户信息,并在登录成功后自动获取用户信息。
- 在SettingFeature中新增用户信息刷新状态管理,支持用户信息的刷新操作。
- 在SettingView中集成用户信息刷新按钮,提升用户体验。
- 在SplashFeature中实现自动获取用户信息的逻辑,优化用户登录流程。
- 在yanaAPITests中添加用户信息相关的单元测试,确保功能的正确性。
This commit is contained in:
edwinQQQ
2025-07-23 11:46:46 +08:00
parent 8362142c49
commit 0fe3b6cb7a
10 changed files with 358 additions and 14 deletions

View File

@@ -173,3 +173,68 @@ final class yanaAPITests: XCTestCase {
}
}
}
// MARK: - User Info API Tests
extension yanaAPITests {
func testGetUserInfoRequest() {
//
let uid = "12345"
let request = UserInfoHelper.createGetUserInfoRequest(uid: uid)
XCTAssertEqual(request.endpoint, "/user/get", "端点应该正确")
XCTAssertEqual(request.method, .GET, "请求方法应该是GET")
XCTAssertEqual(request.queryParameters?["uid"], uid, "UID参数应该正确")
XCTAssertFalse(request.shouldShowLoading, "不应该显示loading")
XCTAssertFalse(request.shouldShowError, "不应该显示错误")
}
func testGetUserInfoResponse() {
//
let responseData: [String: Any] = [
"code": 200,
"message": "success",
"timestamp": 1640995200000,
"data": [
"user_id": "12345",
"username": "testuser",
"nickname": "测试用户",
"avatar": "https://example.com/avatar.jpg",
"email": "test@example.com",
"phone": "13800138000",
"status": "active",
"create_time": "2024-01-01 00:00:00",
"update_time": "2024-01-01 00:00:00"
]
]
do {
let jsonData = try JSONSerialization.data(withJSONObject: responseData)
let response = try JSONDecoder().decode(GetUserInfoResponse.self, from: jsonData)
XCTAssertTrue(response.isSuccess, "响应应该成功")
XCTAssertEqual(response.code, 200, "状态码应该正确")
XCTAssertNotNil(response.data, "用户信息数据应该存在")
if let userInfo = response.data {
XCTAssertEqual(userInfo.userId, "12345", "用户ID应该正确")
XCTAssertEqual(userInfo.username, "testuser", "用户名应该正确")
XCTAssertEqual(userInfo.nickname, "测试用户", "昵称应该正确")
}
debugInfoSync("✅ 用户信息响应解析测试通过")
} catch {
XCTFail("解析用户信息响应失败: \(error)")
}
}
func testUserInfoHelper() {
// UserInfoHelper
let uid = "67890"
UserInfoHelper.debugGetUserInfoRequest(uid: uid)
let request = UserInfoHelper.createGetUserInfoRequest(uid: uid)
XCTAssertEqual(request.queryParameters?["uid"], uid, "Helper创建的请求应该正确")
}
}