修复任务提交与弹窗交互问题
This commit is contained in:
@ -118,6 +118,45 @@ final class MaterialManagementViewModelTests: XCTestCase {
|
||||
XCTAssertNil(api.lastUploadRequest?.id)
|
||||
}
|
||||
|
||||
func testCloudMediaImportBuildsMaterialRequestWithoutUploadingAgain() async {
|
||||
let api = MockMaterialAPI()
|
||||
api.spotResponse = ScenicSpotListResponse(list: [ScenicSpotItem(id: 9, name: "打卡点")], total: 1)
|
||||
let viewModel = MaterialFormViewModel(mode: .create, currentScenicIdProvider: { 3 })
|
||||
var didSucceed = false
|
||||
viewModel.onSubmitSuccess = { didSucceed = true }
|
||||
|
||||
await viewModel.loadInitial(api: api)
|
||||
viewModel.updateMaterialName("云盘素材")
|
||||
viewModel.selectScenicSpot(ScenicSpotItem(id: 9, name: "打卡点"))
|
||||
viewModel.addCloudMediaFiles([
|
||||
CloudFile(id: 31, fileUrl: "https://cdn/cloud.jpg", coverUrl: "https://cdn/cover-thumb.jpg", name: "cloud.jpg", type: 2, fileSize: 88),
|
||||
])
|
||||
await viewModel.setCoverImage(makeUploadItem(fileName: "cover.jpg"), uploader: MockMaterialUploader(urls: ["https://cdn/cover.jpg"]))
|
||||
await viewModel.submit(api: api)
|
||||
|
||||
XCTAssertTrue(didSucceed)
|
||||
XCTAssertEqual(viewModel.importedCloudFileIDs, Set([31]))
|
||||
XCTAssertEqual(api.lastUploadRequest?.mediaList.first?.originalName, "cloud.jpg")
|
||||
XCTAssertEqual(api.lastUploadRequest?.mediaList.first?.ossUrl, "https://cdn/cloud.jpg")
|
||||
XCTAssertEqual(api.lastUploadRequest?.mediaList.first?.size, 88)
|
||||
}
|
||||
|
||||
func testCloudMediaImportFiltersByCurrentMaterialTypeAndDeduplicates() {
|
||||
let viewModel = MaterialFormViewModel(mode: .create, currentScenicIdProvider: { 3 })
|
||||
var messages: [String] = []
|
||||
viewModel.onShowMessage = { messages.append($0) }
|
||||
|
||||
viewModel.addCloudMediaFiles([
|
||||
CloudFile(id: 1, fileUrl: "https://cdn/video.mp4", name: "video.mp4", type: 1),
|
||||
CloudFile(id: 2, fileUrl: "https://cdn/image.jpg", name: "image.jpg", type: 2),
|
||||
CloudFile(id: 2, fileUrl: "https://cdn/image.jpg", name: "image.jpg", type: 2),
|
||||
])
|
||||
|
||||
XCTAssertEqual(viewModel.uploadedMediaList.map(\.ossUrl), ["https://cdn/image.jpg"])
|
||||
XCTAssertEqual(viewModel.importedCloudFileIDs, Set([2]))
|
||||
XCTAssertTrue(messages.isEmpty)
|
||||
}
|
||||
|
||||
func testUploadDialogStaysHiddenAfterCompletionProgressCallback() async {
|
||||
let viewModel = MaterialFormViewModel(mode: .create, currentScenicIdProvider: { 3 })
|
||||
let uploader = MockMaterialUploader(urls: ["https://cdn/a.jpg"])
|
||||
|
||||
Reference in New Issue
Block a user