完善任务流程、键盘适配与页面交互

This commit is contained in:
2026-07-10 15:56:15 +08:00
parent f88a85a807
commit ab5220e460
189 changed files with 16779 additions and 1038 deletions

View File

@ -1269,6 +1269,53 @@ final class WildPhotographerReportTests: XCTestCase {
XCTAssertEqual(viewModel.errorMessage, URLError(.badServerResponse).localizedDescription)
}
func testRiskMapViewModelSharesSelectedReportMarker() async {
let viewModel = WildReportRiskMapViewModel()
let api = MockWildPhotographerReportAPI()
api.riskMapResponses = [makeRiskMapResponse()]
api.reportShareResponse = WildReportMiniProgramShareData(
userName: "gh_test",
path: "/pages/report/detail?id=32",
title: "举报线索",
description: "请协助处理",
webpageURL: "https://example.com/report/32",
miniProgramTypeValue: WeChatMiniProgramType.preview.rawValue
)
await viewModel.loadInitial(
api: api,
locationProvider: MockRiskMapLocationProvider(.success(latitude: 43.3779, longitude: 84.0217)),
scenicId: 128
)
let redMarker = try! XCTUnwrap(viewModel.markers.first { $0.kind == .wildPhotographer })
await viewModel.selectMarker(redMarker)
let payload = await viewModel.shareSelectedClue(api: api)
XCTAssertEqual(api.reportShareRequests, ["32"])
XCTAssertEqual(payload?.title, "举报线索")
XCTAssertEqual(payload?.path, "/pages/report/detail?id=32")
XCTAssertEqual(payload?.miniProgramType, .preview)
}
func testRiskMapViewModelDoesNotShareCurrentLocationMarker() async {
let viewModel = WildReportRiskMapViewModel()
let api = MockWildPhotographerReportAPI()
api.riskMapResponses = [makeRiskMapResponse()]
await viewModel.loadInitial(
api: api,
locationProvider: MockRiskMapLocationProvider(.success(latitude: 43.3779, longitude: 84.0217)),
scenicId: 128
)
let payload = await viewModel.shareSelectedClue(api: api)
XCTAssertNil(payload)
XCTAssertTrue(api.reportShareRequests.isEmpty)
XCTAssertEqual(viewModel.errorMessage, "请选择可分享的举报线索")
}
func testDetailViewModelLoadsRemoteDetailWhenServerIDExists() async {
let record = makeReportListItem(complaintNo: "JB20260708917", handleStatus: 0).toRecord()
let viewModel = WildPhotographerReportDetailViewModel(record: record)