模块化 AppStore 并完善素材管理与个人空间设置。
将会话、权限、位置、收款与排队存储拆分为独立模块,同步更新各 ViewModel 与单元测试,并补充素材管理 UI 与个人空间设置交互。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -16,9 +16,9 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
let defaults = UserDefaults(suiteName: "PaymentCollectionDetailsViewModelTests")!
|
||||
defaults.removePersistentDomain(forName: "PaymentCollectionDetailsViewModelTests")
|
||||
appStore = AppStore(defaults: defaults)
|
||||
appStore.userId = "10001"
|
||||
appStore.currentScenicId = 10
|
||||
appStore.currentScenicName = "测试景区"
|
||||
appStore.session.userId = "10001"
|
||||
appStore.session.currentScenicId = 10
|
||||
appStore.session.currentScenicName = "测试景区"
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
@ -76,12 +76,12 @@ final class PaymentCollectionDetailsViewModelTests: XCTestCase {
|
||||
|
||||
XCTAssertFalse(viewModel.isVoiceBroadcastOpen)
|
||||
viewModel.toggleReceiveVoice()
|
||||
XCTAssertTrue(appStore.isOpenReceiveVoice)
|
||||
XCTAssertTrue(appStore.payment.isOpenReceiveVoice)
|
||||
XCTAssertTrue(viewModel.isVoiceBroadcastOpen)
|
||||
}
|
||||
|
||||
func testLoadPayCodeClearsQRWhenScenicMissing() async {
|
||||
appStore.currentScenicId = 0
|
||||
appStore.session.currentScenicId = 0
|
||||
let session = MockURLSession(responses: [])
|
||||
let api = PaymentAPI(client: APIClient(environment: .testing, session: session))
|
||||
let viewModel = PaymentCollectionDetailsViewModel(appStore: appStore)
|
||||
|
||||
Reference in New Issue
Block a user