Add custom main tab bar with global scan-to-verify flow.
Introduce configurable custom TabBar with order badge, central scanner routing to verification orders, and update the migration checklist for recently completed modules. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -30,6 +30,38 @@ final class NavigationRouterTests: XCTestCase {
|
||||
XCTAssertEqual(router.selectedOrdersEntry, .verificationOrders)
|
||||
}
|
||||
|
||||
/// 测试全局扫码核销路由会切到订单核销入口并保存扫码结果。
|
||||
func testRouteToOrderVerificationStoresPendingScanCode() {
|
||||
let router = AppRouter()
|
||||
|
||||
router.routeToOrderVerification(scannedCode: "order_number=VERIFY001")
|
||||
|
||||
XCTAssertEqual(router.selectedTab, .orders)
|
||||
XCTAssertEqual(router.selectedOrdersEntry, .verificationOrders)
|
||||
XCTAssertEqual(router.pendingOrderScanCode, "order_number=VERIFY001")
|
||||
}
|
||||
|
||||
/// 测试全局扫码结果只能被消费一次。
|
||||
func testConsumePendingOrderScanCodeClearsValueAfterFirstRead() {
|
||||
let router = AppRouter()
|
||||
router.routeToOrderVerification(scannedCode: "VERIFY001")
|
||||
|
||||
XCTAssertEqual(router.consumePendingOrderScanCode(), "VERIFY001")
|
||||
XCTAssertNil(router.consumePendingOrderScanCode())
|
||||
}
|
||||
|
||||
/// 测试重置主路由时会清理未消费的扫码结果。
|
||||
func testResetClearsPendingOrderScanCode() {
|
||||
let router = AppRouter()
|
||||
router.routeToOrderVerification(scannedCode: "VERIFY001")
|
||||
|
||||
router.reset()
|
||||
|
||||
XCTAssertEqual(router.selectedTab, .home)
|
||||
XCTAssertEqual(router.selectedOrdersEntry, .storeOrders)
|
||||
XCTAssertNil(router.pendingOrderScanCode)
|
||||
}
|
||||
|
||||
/// 测试订单模块真实路由可被压入导航栈。
|
||||
func testOrderRoutesCanBePushedIntoRouterPath() throws {
|
||||
let router = RouterPath()
|
||||
|
||||
Reference in New Issue
Block a user