Files
suixinkan_uikit/suixinkanTests/TaskModelsTests.swift

78 lines
2.4 KiB
Swift

//
// TaskModelsTests.swift
// suixinkanTests
//
import XCTest
@testable import suixinkan
///
final class TaskModelsTests: XCTestCase {
func testAddTaskRequestEncodesSnakeCaseFields() throws {
let request = AddTaskRequest(
scenicId: 10,
name: "测试任务",
orderNumber: "NO001",
remark: "描述",
urgentHour: 2,
cloudFile: [TaskCloudFileItem(fileId: 1, remark: "云备注")],
uploadFile: [TaskUploadFileItem(fileUrl: "https://cdn/a.jpg", fileName: "a.jpg", remark: "")]
)
let data = try JSONEncoder().encode(request)
let json = try JSONSerialization.jsonObject(with: data) as? [String: Any]
XCTAssertEqual(json?["scenic_id"] as? Int, 10)
XCTAssertEqual(json?["name"] as? String, "测试任务")
XCTAssertEqual(json?["order_number"] as? String, "NO001")
XCTAssertEqual(json?["photog_remark"] as? String, "描述")
XCTAssertEqual(json?["urgent_hour"] as? Int, 2)
}
func testAvailableOrderDecodesSnakeCaseFields() throws {
let json = """
{
"project_name": "",
"order_number": "NO001",
"order_status": 1,
"order_status_label": "",
"pay_time": "2024-01-01 10:00:00",
"user_id": 100,
"user_phone": "13800138000"
}
""".data(using: .utf8)!
let order = try JSONDecoder().decode(AvailableOrder.self, from: json)
XCTAssertEqual(order.projectName, "航拍项目")
XCTAssertEqual(order.orderNumber, "NO001")
XCTAssertEqual(order.orderStatusLabel, "已付款")
}
func testCloudFileListResponseDecodesList() throws {
let json = """
{
"total": 1,
"list": [
{
"id": 5,
"parent_folder_id": 0,
"file_url": "https://cdn/a.jpg",
"cover_url": "",
"updated_at": "",
"name": "图片1",
"created_at": "",
"child_num": 0,
"type": 2,
"file_size": 100
}
]
}
""".data(using: .utf8)!
let response = try JSONDecoder().decode(CloudFileListResponse.self, from: json)
XCTAssertEqual(response.total, 1)
XCTAssertEqual(response.list[0].id, 5)
XCTAssertTrue(response.list[0].isImage)
}
}