实现订单 Tab 并接入扫码核销流程
This commit is contained in:
85
suixinkanTests/OrderListViewModelTests.swift
Normal file
85
suixinkanTests/OrderListViewModelTests.swift
Normal file
@ -0,0 +1,85 @@
|
||||
//
|
||||
// OrderListViewModelTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
@MainActor
|
||||
final class OrderListViewModelTests: XCTestCase {
|
||||
|
||||
override func tearDown() {
|
||||
AppStore.shared.roleCode = ""
|
||||
AppStore.shared.roleName = ""
|
||||
AppStore.shared.currentScenicId = 0
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
func testOrderStatusQueryMapping() {
|
||||
XCTAssertNil(OrderListQueryBuilder.orderStatusQuery(tabIndex: 0))
|
||||
XCTAssertEqual(OrderListQueryBuilder.orderStatusQuery(tabIndex: 18), "18")
|
||||
XCTAssertEqual(OrderListQueryBuilder.orderStatusQuery(tabIndex: 30), "30")
|
||||
}
|
||||
|
||||
func testIsRefinedQueryMapping() {
|
||||
XCTAssertNil(OrderListQueryBuilder.isRefinedQuery(rTabIndex: 0))
|
||||
XCTAssertEqual(OrderListQueryBuilder.isRefinedQuery(rTabIndex: 1), 1)
|
||||
XCTAssertEqual(OrderListQueryBuilder.isRefinedQuery(rTabIndex: 2), 2)
|
||||
}
|
||||
|
||||
func testPhotographerFilterLabels() {
|
||||
let viewModel = OrderListViewModel()
|
||||
viewModel.onFilterChange(orderStatus: 18, isRefined: 0)
|
||||
XCTAssertEqual(viewModel.filterLabel, "已付定金")
|
||||
viewModel.onFilterChange(orderStatus: 0, isRefined: 1)
|
||||
XCTAssertEqual(viewModel.filterLabel, "需要精修")
|
||||
}
|
||||
|
||||
func testRoleRoutingPath() {
|
||||
AppStore.shared.roleCode = AppRoleCode.scenicAdmin.rawValue
|
||||
let scenicVM = OrderListViewModel()
|
||||
XCTAssertEqual(scenicVM.listAPIPath, "/api/app/scenic-admin/order/list")
|
||||
XCTAssertTrue(scenicVM.isScenicAdminReadOnly)
|
||||
|
||||
AppStore.shared.roleCode = AppRoleCode.photographer.rawValue
|
||||
let photoVM = OrderListViewModel()
|
||||
XCTAssertEqual(photoVM.listAPIPath, "/api/yf-handset-app/photog/order/listv2")
|
||||
XCTAssertFalse(photoVM.isScenicAdminReadOnly)
|
||||
}
|
||||
|
||||
func testLoadMoreBoundary() {
|
||||
let viewModel = OrderListViewModel()
|
||||
XCTAssertFalse(viewModel.shouldLoadMore(at: 0))
|
||||
}
|
||||
|
||||
func testOrderEntityDecodesPhotoTravel() throws {
|
||||
let json = """
|
||||
{
|
||||
"code": 100000,
|
||||
"msg": "success",
|
||||
"data": {
|
||||
"total": 1,
|
||||
"list": [{
|
||||
"order_number": "NO001",
|
||||
"order_status": 18,
|
||||
"order_status_name": "已付定金",
|
||||
"actual_pay_amount": "99.00",
|
||||
"photo_travel": {
|
||||
"order_photo_num": 10,
|
||||
"order_video_num": 1,
|
||||
"need_check_in": true,
|
||||
"can_cancel_order": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
|
||||
let envelope = try JSONDecoder().decode(APIEnvelope<OrderListResponse<OrderEntity>>.self, from: json)
|
||||
let order = try XCTUnwrap(envelope.data?.list.first)
|
||||
XCTAssertEqual(order.orderNumber, "NO001")
|
||||
XCTAssertEqual(order.photoTravel?.orderPhotoNum, 10)
|
||||
XCTAssertEqual(order.photoTravel?.needCheckIn, true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user