fix: 优化收款码加载态,避免首屏错误占位闪现
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -69,6 +69,26 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
XCTAssertFalse(viewModel.showAmountDialog)
|
||||
}
|
||||
|
||||
func testPayCodeLoadingStateCoversInitialRenderAndRequest() async {
|
||||
let payCodeJSON = """
|
||||
{"code":100000,"msg":"success","data":{"static_pay_url":"https://pay.example.com/static","dynamic_pay_url":"https://pay.example.com/dynamic"}}
|
||||
""".data(using: .utf8)!
|
||||
let session = MockURLSession(responses: [payCodeJSON])
|
||||
let api = PaymentAPI(client: APIClient(environment: .testing, session: session))
|
||||
let viewModel = PaymentCollectionDetailsViewModel(appStore: appStore)
|
||||
var loadingStates = [viewModel.isPayCodeLoading]
|
||||
viewModel.onStateChange = {
|
||||
loadingStates.append(viewModel.isPayCodeLoading)
|
||||
}
|
||||
|
||||
await viewModel.loadPayCode(api: api)
|
||||
|
||||
XCTAssertEqual(loadingStates.first, true)
|
||||
XCTAssertTrue(loadingStates.dropLast().allSatisfy { $0 })
|
||||
XCTAssertEqual(loadingStates.last, false)
|
||||
XCTAssertTrue(viewModel.hasPayCode)
|
||||
}
|
||||
|
||||
func testToggleReceiveVoicePersistsInAppStore() {
|
||||
let viewModel = PaymentCollectionDetailsViewModel(appStore: appStore)
|
||||
viewModel.refreshLocalState()
|
||||
@ -105,6 +125,7 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
|
||||
await viewModel.loadPayCode(api: api)
|
||||
|
||||
XCTAssertFalse(viewModel.isPayCodeLoading)
|
||||
XCTAssertFalse(viewModel.hasPayCode)
|
||||
XCTAssertEqual(session.requests.count, 0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user