修复任务提交与弹窗交互问题

This commit is contained in:
2026-07-10 14:51:34 +08:00
parent df547a16dc
commit f88a85a807
48 changed files with 1065 additions and 254 deletions

View File

@ -30,6 +30,32 @@ final class TaskAddViewModelTests: XCTestCase {
XCTAssertEqual(message, "请填写任务名称!")
}
func testTextInputsAreTrimmedToAndroidLimits() {
let viewModel = TaskAddViewModel(appStore: appStore)
viewModel.updateTaskName(String(repeating: "", count: 25))
viewModel.updateTaskDetails(String(repeating: "", count: 210))
viewModel.addCloudFiles([CloudFile(id: 1, name: "A", type: 2)])
viewModel.presentRemarkDialog(for: viewModel.selectedFiles[0].id)
viewModel.updateRemarkDialogText(String(repeating: "", count: 60))
XCTAssertEqual(viewModel.taskName.count, 20)
XCTAssertEqual(viewModel.taskDetails.count, 200)
XCTAssertEqual(viewModel.remarkDialogText.count, 50)
}
func testUploadingStateBlocksSubmitButKeepsButtonActionUseful() async {
let viewModel = TaskAddViewModel(appStore: appStore)
viewModel.updateTaskName("任务")
viewModel.addUploadPlaceholder(fileName: "a.jpg", fileType: 2, uploadTaskId: "task1")
var message: String?
viewModel.onShowMessage = { message = $0 }
await viewModel.validateAndSubmit(api: TaskAPI(client: makeClient()))
XCTAssertEqual(message, "文件正在上传中,请稍后添加!")
}
func testBuildAddTaskRequestSplitsCloudAndUploadFiles() {
let viewModel = TaskAddViewModel(appStore: appStore)
viewModel.updateTaskName("任务A")
@ -50,6 +76,14 @@ final class TaskAddViewModelTests: XCTestCase {
XCTAssertEqual(request.uploadFile[0].fileUrl, "https://cdn/a.jpg")
}
func testTaskFileSourceBadgeTextMatchesAndroidLabels() {
let cloudItem = TaskFileItem(source: .cloud, cloudFile: CloudFile(id: 1, name: "云文件", type: 2))
let uploadItem = TaskFileItem(source: .upload, uploadFileName: "a.jpg", uploadFileType: 2)
XCTAssertEqual(cloudItem.sourceBadgeText, "云盘")
XCTAssertEqual(uploadItem.sourceBadgeText, "本地")
}
func testAddCloudFilesDedupesAndAutoRemarkSingleFile() {
let viewModel = TaskAddViewModel(appStore: appStore)
viewModel.addCloudFiles([CloudFile(id: 1, name: "A", type: 2)])
@ -74,8 +108,12 @@ final class TaskAddViewModelTests: XCTestCase {
viewModel.resetAllState()
XCTAssertEqual(viewModel.taskName, "")
XCTAssertEqual(viewModel.taskDetails, "")
XCTAssertNil(viewModel.selectedOrderNumber)
XCTAssertEqual(viewModel.urgentHour, 0)
XCTAssertTrue(viewModel.selectedFiles.isEmpty)
XCTAssertFalse(viewModel.isUploading)
XCTAssertFalse(viewModel.showSuccessDialog)
}
private func makeClient() -> APIClient {