feat: 使用旅拍相册批量删除接口
This commit is contained in:
@@ -242,6 +242,26 @@ final class TravelAlbumDetailViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(api.deletedAlbumIds, [5])
|
||||
XCTAssertEqual(deletedId, 5)
|
||||
}
|
||||
|
||||
func testDeleteSelectedMaterialsUsesSingleBatchRequest() async {
|
||||
let api = TravelAlbumMockAPI()
|
||||
api.materialListResponses = [
|
||||
TravelAlbumListResponse(total: 0, list: []),
|
||||
TravelAlbumListResponse(total: 0, list: []),
|
||||
TravelAlbumListResponse(total: 0, list: []),
|
||||
]
|
||||
let viewModel = TravelAlbumDetailViewModel(albumId: 5)
|
||||
viewModel.toggleSelectionMode()
|
||||
viewModel.toggleMaterialSelection(TravelAlbumMaterial(id: 2033, status: 1))
|
||||
viewModel.toggleMaterialSelection(TravelAlbumMaterial(id: 2031, status: 1))
|
||||
viewModel.toggleMaterialSelection(TravelAlbumMaterial(id: 2032, status: 1))
|
||||
|
||||
await viewModel.deleteSelectedMaterials(api: api)
|
||||
|
||||
XCTAssertEqual(api.deletedMaterialIDBatches, [[2031, 2032, 2033]])
|
||||
XCTAssertFalse(viewModel.isSelectionMode)
|
||||
XCTAssertTrue(viewModel.selectedMaterialIds.isEmpty)
|
||||
}
|
||||
}
|
||||
|
||||
/// 有线传输 ViewModel 测试。
|
||||
@@ -1097,7 +1117,7 @@ final class TravelAlbumMockAPI: TravelAlbumServing {
|
||||
private(set) var uploadMaterialRequests: [TravelAlbumUploadMaterialRequest] = []
|
||||
private(set) var materialClientPhotoIdsCallCount = 0
|
||||
private(set) var deletedAlbumIds: [Int] = []
|
||||
private(set) var deletedMaterialIds: [Int] = []
|
||||
private(set) var deletedMaterialIDBatches: [[Int]] = []
|
||||
private(set) var aiRetouchTemplateScenicIds: [Int] = []
|
||||
private(set) var aiRetouchRequests: [TravelAlbumAIRetouchRequest] = []
|
||||
private(set) var aiReretouchRequests: [TravelAlbumAIReretouchRequest] = []
|
||||
@@ -1167,8 +1187,8 @@ final class TravelAlbumMockAPI: TravelAlbumServing {
|
||||
deletedAlbumIds.append(id)
|
||||
}
|
||||
|
||||
func deleteMaterial(id: Int) async throws {
|
||||
deletedMaterialIds.append(id)
|
||||
func batchDeleteMaterials(ids: [Int]) async throws {
|
||||
deletedMaterialIDBatches.append(ids)
|
||||
if deleteMaterialDelayNanoseconds > 0 {
|
||||
try await Task.sleep(nanoseconds: deleteMaterialDelayNanoseconds)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user