添加景区选择与合作订单流程并对齐 Android
This commit is contained in:
56
suixinkanTests/PermissionApplyStatusViewModelTests.swift
Normal file
56
suixinkanTests/PermissionApplyStatusViewModelTests.swift
Normal file
@ -0,0 +1,56 @@
|
||||
//
|
||||
// PermissionApplyStatusViewModelTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
@MainActor
|
||||
/// 权限申请审核状态 ViewModel 测试。
|
||||
final class PermissionApplyStatusViewModelTests: XCTestCase {
|
||||
|
||||
func testLoadPendingDataMatchesApplyCode() async throws {
|
||||
let json = """
|
||||
{"code":100000,"msg":"success","data":[{"code":"AP001","role_id":1,"role_name":"摄影师","scenic_list":[{"id":1,"name":"景区A"}],"status":1,"status_label":"审核中","created_at":"2026-01-01","audit_note":"","audited_at":null,"audited_by":null}]}
|
||||
""".data(using: .utf8)!
|
||||
let api = HomeAPI(client: APIClient(environment: .testing, session: MockURLSession(responses: [json])))
|
||||
let viewModel = PermissionApplyStatusViewModel(applyCode: "AP001")
|
||||
|
||||
await viewModel.loadPendingData(api: api)
|
||||
|
||||
XCTAssertEqual(viewModel.pendingData?.code, "AP001")
|
||||
XCTAssertEqual(viewModel.pendingData?.status, 1)
|
||||
XCTAssertFalse(viewModel.isLoading)
|
||||
}
|
||||
|
||||
func testNavigateToEditWhenRejected() async throws {
|
||||
let json = """
|
||||
{"code":100000,"msg":"success","data":[{"code":"AP002","role_id":2,"role_name":"管理员","scenic_list":[],"status":3,"status_label":"已驳回","created_at":"","audit_note":"资料不全","audited_at":null,"audited_by":null}]}
|
||||
""".data(using: .utf8)!
|
||||
let api = HomeAPI(client: APIClient(environment: .testing, session: MockURLSession(responses: [json])))
|
||||
let viewModel = PermissionApplyStatusViewModel(applyCode: "AP002")
|
||||
await viewModel.loadPendingData(api: api)
|
||||
|
||||
var edited: RoleApplyPendingResponse?
|
||||
viewModel.onNavigateToEdit = { edited = $0 }
|
||||
viewModel.navigateToEditIfRejected()
|
||||
|
||||
XCTAssertEqual(edited?.status, 3)
|
||||
}
|
||||
|
||||
func testNavigateToEditIgnoredWhenReviewing() async throws {
|
||||
let json = """
|
||||
{"code":100000,"msg":"success","data":[{"code":"AP003","role_id":1,"role_name":"摄影师","scenic_list":[],"status":1,"status_label":"审核中","created_at":"","audit_note":"","audited_at":null,"audited_by":null}]}
|
||||
""".data(using: .utf8)!
|
||||
let api = HomeAPI(client: APIClient(environment: .testing, session: MockURLSession(responses: [json])))
|
||||
let viewModel = PermissionApplyStatusViewModel(applyCode: "AP003")
|
||||
await viewModel.loadPendingData(api: api)
|
||||
|
||||
var edited: RoleApplyPendingResponse?
|
||||
viewModel.onNavigateToEdit = { edited = $0 }
|
||||
viewModel.navigateToEditIfRejected()
|
||||
|
||||
XCTAssertNil(edited)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user