完善素材管理 UI 交互并修复列表解析与时间选择。

MaterialItem 兼容 Android 缺失字段默认值,优化素材详情/列表/标签布局与上下架开关交互,修复个人空间时间选择器初始值。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-13 13:34:45 +08:00
parent 7deeedec68
commit cbf2db649e
6 changed files with 122 additions and 29 deletions

View File

@ -38,6 +38,20 @@ final class MaterialManagementAPITests: XCTestCase {
XCTAssertEqual(response.order?.totalNum, 0)
}
func testListDecodesAndroidDefaultsWhenNamesAreMissing() async throws {
let item = #"{"id":56,"name":"iOS视频素材测试","cover_url":"https://cdn/cover.jpg","created_at":"2026-07-13 11:36:30","status":0,"download_count":0,"likes_count":0,"collect_count":0,"share_count":0,"listing_status":0,"type":"2"}"#
let session = MockURLSession(responses: [envelopeJSON(#"{"total":1,"list":[\#(item)],"order":{"avg_change":1,"avg_order_amount":null,"refund_total":null,"total_num":0}}"#)])
let api = MaterialManagementAPI(client: APIClient(environment: .testing, session: session))
let response = try await api.list(status: 4, keyword: nil, page: 1, pageSize: 10)
let material = try XCTUnwrap(response.list.first)
XCTAssertEqual(material.id, 56)
XCTAssertEqual(material.name, "iOS视频素材测试")
XCTAssertEqual(material.scenicSpotName, "")
XCTAssertEqual(material.projectName, "")
}
func testDetailOperationDeleteAndTagUseAndroidPaths() async throws {
let detail = envelopeJSON(#"{"id":8,"status":1,"listing_status":1}"#)
let empty = envelopeJSON("{}")