添加景区选择与合作订单流程并对齐 Android
This commit is contained in:
63
suixinkanTests/CooperationOrderListViewModelTests.swift
Normal file
63
suixinkanTests/CooperationOrderListViewModelTests.swift
Normal file
@ -0,0 +1,63 @@
|
||||
//
|
||||
// CooperationOrderListViewModelTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
@MainActor
|
||||
final class CooperationOrderListViewModelTests: XCTestCase {
|
||||
|
||||
func testRefreshLeadsLoadsFirstPage() async throws {
|
||||
let json = """
|
||||
{"code":100000,"msg":"success","data":{"total":1,"list":[{"id":1,"user_phone":"13800138000","created_at":"2026-01-01"}]}}
|
||||
""".data(using: .utf8)!
|
||||
let api = OrderAPI(client: APIClient(environment: .testing, session: MockURLSession(responses: [json])))
|
||||
let viewModel = CooperationOrderListViewModel()
|
||||
|
||||
await viewModel.refreshLeads(api: api)
|
||||
|
||||
XCTAssertEqual(viewModel.leads.count, 1)
|
||||
XCTAssertFalse(viewModel.canLoadMore)
|
||||
XCTAssertFalse(viewModel.isRefreshing)
|
||||
}
|
||||
|
||||
func testSearchUsesKeywordQuery() async throws {
|
||||
let json = """
|
||||
{"code":100000,"msg":"success","data":{"total":0,"list":[]}}
|
||||
""".data(using: .utf8)!
|
||||
let session = MockURLSession(responses: [json])
|
||||
let api = OrderAPI(client: APIClient(environment: .testing, session: session))
|
||||
let viewModel = CooperationOrderListViewModel()
|
||||
viewModel.onTabSelected(1)
|
||||
viewModel.onSearchTextChange("张三")
|
||||
|
||||
await viewModel.refreshAcquisitionOrders(api: api)
|
||||
|
||||
let url = try XCTUnwrap(session.requests.first?.url?.absoluteString)
|
||||
XCTAssertTrue(url.contains("acquisition-orders"))
|
||||
XCTAssertTrue(url.contains("keyword="))
|
||||
}
|
||||
|
||||
func testLoadMoreAppendsLeads() async throws {
|
||||
let page1 = """
|
||||
{"code":100000,"msg":"success","data":{"total":2,"list":[{"id":1,"user_phone":"13800138000"}]}}
|
||||
""".data(using: .utf8)!
|
||||
let page2 = """
|
||||
{"code":100000,"msg":"success","data":{"total":2,"list":[{"id":2,"user_phone":"13800138001"}]}}
|
||||
""".data(using: .utf8)!
|
||||
let api = OrderAPI(client: APIClient(environment: .testing, session: MockURLSession(responses: [page1, page2])))
|
||||
let viewModel = CooperationOrderListViewModel()
|
||||
|
||||
await viewModel.refreshLeads(api: api)
|
||||
await viewModel.loadMore(api: api)
|
||||
|
||||
XCTAssertEqual(viewModel.leads.count, 2)
|
||||
}
|
||||
|
||||
func testShouldLoadMoreNearEnd() {
|
||||
let viewModel = CooperationOrderListViewModel()
|
||||
XCTAssertFalse(viewModel.shouldLoadMore(at: 0))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user