feat: 优化线下收款日历交互与选中态
This commit is contained in:
@@ -87,6 +87,35 @@ final class OfflineCollectionCalendarTests: XCTestCase {
|
||||
state.movePage(40)
|
||||
XCTAssertEqual(OfflineCollectionDate.businessDate(for: state.selectedDate), "2026-08-25")
|
||||
}
|
||||
|
||||
func testCalendarPageNavigationKeepsPositionAndUsesTodayAtFutureBoundary() throws {
|
||||
let maximum = try XCTUnwrap(OfflineCollectionDate.date(from: "2026-08-26"))
|
||||
let friday = try XCTUnwrap(OfflineCollectionDate.date(from: "2026-08-21"))
|
||||
var week = OfflineCollectionCalendarState(selectedDate: friday, maximumDate: maximum)
|
||||
XCTAssertTrue(week.canMovePage(1))
|
||||
week.movePage(1)
|
||||
XCTAssertEqual(OfflineCollectionDate.businessDate(for: week.selectedDate), "2026-08-26")
|
||||
XCTAssertFalse(week.canMovePage(1))
|
||||
|
||||
let tuesday = try XCTUnwrap(OfflineCollectionDate.date(from: "2026-08-25"))
|
||||
week = OfflineCollectionCalendarState(selectedDate: tuesday, maximumDate: maximum)
|
||||
week.movePage(-1)
|
||||
XCTAssertEqual(OfflineCollectionDate.businessDate(for: week.selectedDate), "2026-08-18")
|
||||
|
||||
let march = try XCTUnwrap(OfflineCollectionDate.date(from: "2025-03-31"))
|
||||
var month = OfflineCollectionCalendarState(selectedDate: march, maximumDate: maximum, mode: .month)
|
||||
month.movePage(-1)
|
||||
XCTAssertEqual(OfflineCollectionDate.businessDate(for: month.selectedDate), "2025-02-28")
|
||||
}
|
||||
|
||||
func testSelectedWeekRowIndexAndModeTogglePreserveDate() throws {
|
||||
let selected = try XCTUnwrap(OfflineCollectionDate.date(from: "2026-08-12"))
|
||||
var state = OfflineCollectionCalendarState(selectedDate: selected, maximumDate: selected)
|
||||
XCTAssertEqual(state.selectedWeekRowIndex, 2)
|
||||
state.toggleMode()
|
||||
XCTAssertEqual(OfflineCollectionDate.businessDate(for: state.selectedDate), "2026-08-12")
|
||||
XCTAssertEqual(state.selectedWeekRowIndex, 2)
|
||||
}
|
||||
}
|
||||
|
||||
/// 线下收款 ViewModel 的并发与幂等行为测试。
|
||||
|
||||
Reference in New Issue
Block a user