This commit is contained in:
csj
2026-09-12 22:44:53 +08:00
parent 467e374bf6
commit 45fda4bd6b
4 changed files with 52 additions and 3 deletions
+21
View File
@@ -0,0 +1,21 @@
import Foundation
@main
struct AdminAttachmentsTests {
static func main() throws {
let first = #"{"id":"one","name":"first.pdf","kind":"invoice","mime":"application/pdf","size":10}"#
let second = #"{"id":"two","name":"second.pdf","kind":"invoice","mime":"application/pdf","size":20}"#
let decoder = JSONDecoder()
let legacy = try decoder.decode(AdminAttachmentList.self, from: Data(first.utf8))
precondition(legacy.files.count == 1 && legacy.files[0].id == "one")
let multiple = try decoder.decode(AdminAttachmentList.self, from: Data("[\(first),\(second)]".utf8))
precondition(multiple.files.map(\.id) == ["one", "two"])
let roundTrip = try decoder.decode(AdminAttachmentList.self, from: JSONEncoder().encode(multiple))
precondition(roundTrip.files.map(\.id) == ["one", "two"])
let empty = try decoder.decode(AdminAttachmentList.self, from: Data("[]".utf8))
precondition(empty.files.isEmpty)
let mixed = try decoder.decode([String: AdminAttachmentList].self, from: Data("{\"invoice\":[\(first),\(second)],\"legacy\":\(first)}".utf8))
precondition(mixed.values.flatMap { $0.files }.count == 3)
print("Admin attachment compatibility tests passed")
}
}