22 lines
1.2 KiB
Swift
22 lines
1.2 KiB
Swift
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")
|
|
}
|
|
}
|