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") } }